我試圖環繞MVC.NET 3.返回到當前視圖後行動_Layout.cshtml
我使用_Layout.cshtml
爲基礎(結構,導航)我的頭。作爲佈局的一部分,我想顯示兩個用於更改語言/本地化的鏈接。
無論查看哪個頁面,以及更改本地化後,都應顯示並點擊這些文件。我想重新載入名爲操作的視圖。因此,客戶正在查看的頁面將重新加載,並帶有新的本地化設置。
一種方法是在每個站點控制器中複製和粘貼本地化更改操作,但是沒有更簡單更優雅的方式嗎?
我試着創建一個特定的控制器來處理本地化的變化,但無法弄清楚如何將查看器返回到前一個控制器。
也許這更容易用jQuery完成?
這是_Layout
文件中的DIV
,它帶有語言更改按鈕。它調用當前控制器中的動作,這意味着我必須在每個站點的控制器中定義它。 (好消息是返回的觀點是總是正確的。)
<div id="top>
@using (Html.BeginForm())
{
<button id="sv_flag" name="localization" title="@Resources.Global.Sv_Flag_Hover" value="sv-SE" />
<button id="en_flag" name="localization" title="@Resources.Global.En_Flag_Hover" value="en-GB" />
}
</div>
我使用一個特定的控制器,這也嘗試過,但想不到的,我怎麼能回到事後當前視圖?像這樣:
@using (Html.BeginForm("LocalizationAction", "LocalizationController"))
...
編輯 現在利用達林的建議,我在controller
和action
值發送從佈局頁:
@using (Html.BeginForm("SetLocalization", "Localization",
new { returnController = @ViewContext.Controller.ValueProvider.GetValue("controller").RawValue,
returnAction = @ViewContext.Controller.ValueProvider.GetValue("action").RawValue }))
...
但我不能獲取本地化修改工作,我的控制器動作如下所示:
public ActionResult SetLocalization(string localization, string returnController, string returnAction)
{
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(localization);
return RedirectToAction(returnAction, returnController);
}
幾周前我有一個非常類似的問題。基地控制器是我採取的路線。非常方便各種垃圾。 – ledgeJumper 2012-07-08 05:32:47