我们如何才能使通用视图,因为代码在不同的网页中重用?

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>
    }