我有一些看起来像这样的网址:/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;
}
}
如果将搜索词放在列表或数组中,我们可以使用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;
}
Contains
是一个函数,不是要匹配的属性或变量。改用ToString
或Substring
。
另一种方法,尝试:ViewContext.RouteData.Values["controller"].ToString()