如何使用url和Contains()进行switch语句

问题描述 投票:-3回答:3

我有一些看起来像这样的网址:/Collection/Summary?ViewBy=AZ

我正在尝试实现一个switch语句,以便如果URL包含X,那么Y就会发生。

[当它只是一个if / else时就可以使用,但是我不确定它如何与switch表达式一起使用,尤其是Contains部分。

这是代码段:

@{ 
    switch(Request.RawUrl.Contains)
    {
        case "Summary":
        case "Detail":
            @Styles.Render("~/Content/global");
            break;
        default:
            @Styles.Render("~/Content/site");
            break;
    }
}
c# asp.net asp.net-mvc razor switch-statement
3个回答
1
投票

如果将搜索词放在列表或数组中,我们可以使用FirstOrDefault扩展方法来获取原始URL包含的列表中的第一项,并且可以编写类似于您看起来的代码想要:

var keywords = new[] {"Summary", "Detail"};

switch(keywords.FirstOrDefault(Request.RawUrl.Contains))
{
    case "Summary":
    case "Detail":
        @Styles.Render("~/Content/global");
        break;
    default:
        @Styles.Render("~/Content/site");
        break;
}

0
投票

Contains是一个函数,不是要匹配的属性或变量。改用ToStringSubstring

另一种方法,尝试:ViewContext.RouteData.Values["controller"].ToString()

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