我有一個基於ASP.NET MVC4的Web應用程序,我在其中使用包含三種語言標誌(圖像)的佈局。這些標誌在整個網站中都可見。現在我想用這些圖像進行語言選擇。爲了以特定語言顯示任何頁面,我只需要向當前URL添加一個參數並加載它,然後我的控制器對它進行評估並在模型中設置正確的語言(或者在存在時設置默認的回退語言在請求中沒有指定語言)。如何將一個參數添加到視圖中的當前URL?
下面是一個例子(hxxp = HTTP):
沒有語言規定:
hxxp://mysite.com?StationId=12
語言規定:
hxxp://mysite.com?StationId=12&lang=1033
我的問題是:我怎麼能形成一個鏈接我圍繞語言標記圖像的佈局,並始終指向當前加載的所有參數的URL 加上一個新參數&lang=1033
分別是?lang=1033
如果只有語言參數?
換句話說:如何使用所有參數創建到同一頁面的鏈接,並簡單地向URL添加路由值?
更新:這裏有一個詳細的例子
在我_Layout.cshtml
我:
@{
var u_eng = new RouteValueDictionary(Url.RequestContext.RouteData.Values);
var u_deu = new RouteValueDictionary(Url.RequestContext.RouteData.Values);
var u_por = new RouteValueDictionary(Url.RequestContext.RouteData.Values);
u_eng.Add("lang", "1033");
u_deu.Add("lang", "1031");
u_por.Add("lang", "1046");
}
.
.
.
<li>
<a href="@Url.RouteUrl(u_por)" class="Flag BR">BR</a>
</li>
<li>
<a href="@Url.RouteUrl(u_eng)" class="Flag US">US</a>
</li>
<li>
<a href="@Url.RouteUrl(u_deu)" class="Flag DE">DE</a>
</li>
現在,當我運行的網站,在起始頁工作的聯繫就好了,它們指向當前頁面並將lang = xy參數添加到相應的URL。
但是,當我去使用非常相同的佈局文件,並且也使用一個參數另一個頁面,鏈接沒有得到正確生成:假設我去由該URL定義的子頁面:
http://localhost:1234/Stations?position=up
頁面本身得到正確顯示。但是,當我將鼠標懸停或遵循語言的聯繫,他們指出:的
http://localhost:1234/Stations?lang=1031
代替
http://localhost:1234/Stations?position=up&lang=1031
正如你所看到的,省略任何現有的參數。
這正是我一直在尋找。謝謝! – Robert
糟糕...不幸的是,它沒有按預期工作:我從上面構建了代碼到我的佈局文件中,我使用@Url。RouteUrl(currentRouteValues)作爲一個「a」標籤中的href,但它似乎只會構建一次,然後它不會「識別」任何子頁面上的任何現有路由值,只會設置「lang」參數。 – Robert
@羅伯特,你可以請張貼代碼嗎?我不確定我是否瞭解問題 – Andrei