【问题标题】:Asp.Net MVC - Check for a route value in the UrlAsp.Net MVC - 检查 URL 中的路由值
【发布时间】:2012-02-29 15:35:14
【问题描述】:

问题是关于我网站的主页。 该网站已本地化为 2 种语言,默认语言为 IT,另一种语言为 EN。

我的主页是:

www.mysite.com

选择英文时,地址为:

www.mysite.com/en

{language} 参数在我的RouteData 中。

当然,如果我输入 www.mysite.com/it 就可以了,而且和 www.mysite.com 一样

我要做的是,在我的 Action 方法中,检查 url 中是否存在 'it' 字符串,如果存在,则永久重定向到 www.mysite.com 地址。

我可以通过搜索Request.RawUrl 字符串来做到这一点,但我想知道是否有更好的方法来做到这一点。

谢谢

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-routing


    【解决方案1】:

    您可以使用模型绑定来做到这一点 - 只需将参数添加到您的操作中。请注意,在这种情况下,language 参数也可以从查询字符串或表单值中提取其值,前提是它不会出现在 url 中。

        public ActionResult Index(string language)
        {
            if (string.IsNullOrWhiteSpace(language))
            {
               ///
            }
            return View();
        }
    

    或者另一种方式,手动提取路由值。在你的行动中

            string language = RouteData.Values["language"].ToString();
            if (string.IsNullOrWhiteSpace(language))
            {
               ///
            }
    

    【讨论】:

    • 我知道 ModelBinding 或 RouteData 集合,这不是我的情况。我的 RouteData 总是包含 Language 参数,EN 值是默认值,所以如果地址只是 www.mysite.com,EN 值在 RouteData 中。我需要的是检查 EN 值是否在 Url 字符串中,也许我只能检查字符串。
    猜你喜欢
    • 2010-11-22
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多