我们如何才能使通用视图,因为代码在不同的网页中重用?
How can we make the general view, because code is reusing in different web pages?
下面的网页如何做总览。从一般的观点来看,我们可以实施 if 条件来重定向到视图。
这是文件图片:
Calling all weeks from links in index.cshtml
我的 cshtml 文件看起来像:
week3.cshtml
@{
ViewData["Title"] = "Testing Weeks API";
Layout = "~/Views/Shared/_GameLayout.cshtml";
}
<script src="/lib/pixi.js/browser/pixi.js" ></script>
<script src="/OtherJS/pixi-viewport.js"></script>
<script src="/OtherJS/pixi-scrollbox.js"></script>
<script src="~/js/week-3.js" type="module"></script>
week4.cshtml
@{
ViewData["Title"] = "Testing Weeks API";
Layout = "~/Views/Shared/_GameLayout.cshtml";
}
<script src="/lib/pixi.js/browser/pixi.js" ></script>
<script src="/OtherJS/pixi-viewport.js"></script>
<script src="/OtherJS/pixi-scrollbox.js"></script>
<script src="~/js/week-4.js" type="module"></script>
我只是不想要 10 周的浏览量文件,我只需要一个 weeks.cshtml 从那里我可以使用 if 条件重定向到链接。
提前感谢解决方案
您可以尝试将数据传递给 weeks.cshtml 模型,这里是一个演示:
型号:
public class Model{
public int number { get; set; }
}
查看:
<script src="~/js/week-@(Model.number).js" type="module"></script>
操作:
public IActionResult TestJs() {
return View(new Model {number=3});
}
结果:
假设您的 index.cshtml
有 10 个 link 用于 10 个 Week{1-10}.cshtml
文件,但您想要 1 Week.cshmtl
以编程方式显示所有 10 个文件而没有 10 个真正的 cshmtl 文件。
您可以简单地为每个 link 传递一个数字,例如在您的 index.cshtml
文件中您可以拥有
@foreach (var week in Model.Weeks)
{
<a asp-page="./Week" asp-route-weekNumber="@week.Number"> Week-@week.Number </a>
}
那么你的 Week.cshtml
会像
@page "{weekNumber:int}"
@model Yournamespace.Pages.Home.WeekModel
@{
ViewData["Title"] = "Testing Weeks API";
Layout = "~/Views/Shared/_GameLayout.cshtml";
}
<script src="/lib/pixi.js/browser/pixi.js"></script>
<script src="/OtherJS/pixi-viewport.js"></script>
<script src="/OtherJS/pixi-scrollbox.js"></script>
<script src="~/js/week-@(Model.WeekNumber).js" type="module"></script>
你的 Week.cshtml.cs
会像
public class WeekModel : PageModel
{
[BindProperty(SupportsGet = true)]
public int WeekNumber { get; set; }
public IActionResult OnGet(int weekNumber)
{
// Do something
return Page();
}
}
只需在 viewbag 中传递一个值,然后在控制器文件中对其设置条件。如果该条件满足则显示第 3 周,否则显示第 4 周。
public IActionResult Week()
{
ViewBag.Name = 1;
return View();
}
然后在显示所有周的 Weekcshtml 文件中使用它。
@if(ViewBag.Name == 1){
<script src="~/js/week-3.js" type="module"></script>
}
else{
<script src="~/js/week-4.js" type="module"></script>
}
下面的网页如何做总览。从一般的观点来看,我们可以实施 if 条件来重定向到视图。 这是文件图片: Calling all weeks from links in index.cshtml 我的 cshtml 文件看起来像:
week3.cshtml
@{
ViewData["Title"] = "Testing Weeks API";
Layout = "~/Views/Shared/_GameLayout.cshtml";
}
<script src="/lib/pixi.js/browser/pixi.js" ></script>
<script src="/OtherJS/pixi-viewport.js"></script>
<script src="/OtherJS/pixi-scrollbox.js"></script>
<script src="~/js/week-3.js" type="module"></script>
week4.cshtml
@{
ViewData["Title"] = "Testing Weeks API";
Layout = "~/Views/Shared/_GameLayout.cshtml";
}
<script src="/lib/pixi.js/browser/pixi.js" ></script>
<script src="/OtherJS/pixi-viewport.js"></script>
<script src="/OtherJS/pixi-scrollbox.js"></script>
<script src="~/js/week-4.js" type="module"></script>
我只是不想要 10 周的浏览量文件,我只需要一个 weeks.cshtml 从那里我可以使用 if 条件重定向到链接。 提前感谢解决方案
您可以尝试将数据传递给 weeks.cshtml 模型,这里是一个演示:
型号:
public class Model{
public int number { get; set; }
}
查看:
<script src="~/js/week-@(Model.number).js" type="module"></script>
操作:
public IActionResult TestJs() {
return View(new Model {number=3});
}
结果:
假设您的 index.cshtml
有 10 个 link 用于 10 个 Week{1-10}.cshtml
文件,但您想要 1 Week.cshmtl
以编程方式显示所有 10 个文件而没有 10 个真正的 cshmtl 文件。
您可以简单地为每个 link 传递一个数字,例如在您的 index.cshtml
文件中您可以拥有
@foreach (var week in Model.Weeks)
{
<a asp-page="./Week" asp-route-weekNumber="@week.Number"> Week-@week.Number </a>
}
那么你的 Week.cshtml
会像
@page "{weekNumber:int}"
@model Yournamespace.Pages.Home.WeekModel
@{
ViewData["Title"] = "Testing Weeks API";
Layout = "~/Views/Shared/_GameLayout.cshtml";
}
<script src="/lib/pixi.js/browser/pixi.js"></script>
<script src="/OtherJS/pixi-viewport.js"></script>
<script src="/OtherJS/pixi-scrollbox.js"></script>
<script src="~/js/week-@(Model.WeekNumber).js" type="module"></script>
你的 Week.cshtml.cs
会像
public class WeekModel : PageModel
{
[BindProperty(SupportsGet = true)]
public int WeekNumber { get; set; }
public IActionResult OnGet(int weekNumber)
{
// Do something
return Page();
}
}
只需在 viewbag 中传递一个值,然后在控制器文件中对其设置条件。如果该条件满足则显示第 3 周,否则显示第 4 周。
public IActionResult Week()
{
ViewBag.Name = 1;
return View();
}
然后在显示所有周的 Weekcshtml 文件中使用它。
@if(ViewBag.Name == 1){
<script src="~/js/week-3.js" type="module"></script>
}
else{
<script src="~/js/week-4.js" type="module"></script>
}