2012-02-29 108 views
1

问题是关于我网站的主页。 该网站本地化为2种语言,默认语言为IT,备选语言为EN。Asp.Net MVC - 检查URL中的路由值

我的主页是:

www.mysite.com 

当选择英语,地址是:

www.mysite.com/en 

{language}参数是在我RouteData

当然,如果我输入www.mysite.com/it它的工作原理,它是相同的www.mysite.com

我会做的是,在我的行动方法,检查是否'it'字符串是出现在URL,如果它的存在,使永久重定向到www.mysite.com地址。

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

感谢

回答

0

你可以做,使用模型绑定 - 只要参数添加到你的行动。请注意,在这种情况下,language参数可能会从查询字符串或表单值中提取其值,只有当它不在url中时才会提取。

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

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

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

我知道ModelBinding或RouteData集合,这不是我的情况。我的RouteData总是包含语言参数,EN值是默认值,所以如果地址只是www.mysite.com,则EN值在RouteData中。我需要的是检查EN值是否在Url字符串中,也许我只能检查字符串。 – opaera 2012-03-04 16:24:59