【问题标题】:How to do a switch statement using a url and Contains()如何使用 url 和 Contains() 执行 switch 语句
【发布时间】:2019-12-05 21:49:33
【问题描述】:

我有一些如下所示的网址:/Collection/Summary?ViewBy=AZ

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

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

这里是sn-p的代码:

@{ 
    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


    【解决方案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;
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-06-07
        • 2016-08-12
        • 2014-09-10
        • 2020-02-13
        • 2019-06-12
        • 1970-01-01
        • 1970-01-01
        • 2022-11-22
        相关资源
        最近更新 更多