Asp.Net MVC - 检查Url中的路由值

时间:2012-02-29 15:35:15

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

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

我的主页是:

www.mysite.com

选择英语时,地址为:

www.mysite.com/en

{language} param位于我的RouteData

当然,如果我输入www.mysite.com/it它就可以了,它与www.mysite.com

相同

我要做的是,在我的Action方法中,检查网址中是否存在'it'字符串,如果存在,请为www.mysite.com地址创建一个PermanentRedirect。

我可以通过搜索Request.RawUrl字符串来完成此操作,但我想知道是否有更好的方法来执行此操作。

由于

1 个答案:

答案 0 :(得分:0)

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

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

或者替代方式,手动提取路线值。在你的行动中

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