C#-有条件地加载带有switch语句的特定页脚

问题描述 投票:0回答:1

在我的_Layout.cshtml文件中,我正在使用switch语句有条件地加载CSS文件。如果URL包含collAcollD,则加载New.css。如果不是,则加载Old.css。它正在工作,很高兴它。

我想对NewFooterOldFooter做同样的事情,如果url中包含collA,则加载新的,如果不包含,则加载旧的。

但是根据switch语句的位置,如果我有条件地加载任一页脚,则将它们放置在页眉上方。我希望页脚显示在页面底部。

最初我有第二个switch语句,有条件地将页脚加载到正确的位置,但是我只想使用one开关。

基本上,我想实现三件事:

  1. 我想使用加载CSS文件的相同switch语句有条件地加载NewFooterOldFooter
  2. 我希望页脚加载到页面底部,而不是页眉上方
  3. 我只想使用一个switch语句

PS-我是ASP.NET和C#的新手,所以请记住我的语法很生疏。


Layout.cshtml

<title>@ViewBag.Title</title>

    @{
        var keywords = new[] { "colls/collA", "colls/collD" };
        var isNew = RenderPage("~/Views/Shared/NewFooter.cshtml");
        var isOld = RenderPage("~/Views/Shared/OldFooter.cshtml");

        switch (keywords.FirstOrDefault(Request.RawUrl.ToLower().Contains))
        {
            case "colls/collA":
            case "colls/collD":
                @Styles.Render("~/Content/New.css"); // CSS bundle
                //@isNew; // the issue here is that the NewFooter renders above the header
                break;
            default:
                @Styles.Render("~/Content/Old.css");
                //@isOld;
                break;
        }
    }

    @Scripts.Render("~/bundles/jquery")
// other bundles here

...
...
...

<body>
    @if (!Request.Browser.IsMobileDevice)
    {
        // navbar and body code

<div class="body-content">
    @RenderBody()
    // this is where the second switch statement used to be, where the new/old footers were rendered
</div>

...
...
...

</body>
c# html asp.net razor switch-statement
1个回答
0
投票

您应该创建一个字符串actualURL,然后在交换机内部分配它。您可以在页脚(在@RenderBody()下面)中对其进行渲染。

© www.soinside.com 2019 - 2024. All rights reserved.