2012-02-29 104 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