[英]Globalization in asp.net MVC issue with page redirection
基本控制器
public class CultureController : Controller
{
public ActionResult SetCulture(string culture)
{
HttpContext.Session["culture"] = culture
return RedirectToAction("Index", "Home");
}
}
_Layout.cshtml文件中的操作鏈接適用於所有視圖
<li><%= Html.ActionLink("French", "SetCulture", new {controller = "Culture", culture = "fr-FR"})%></li>
<li><%= Html.ActionLink("Spanish", "SetCulture", new {controller = "Culture", culture = "es-ES"})%></li>
它的工作和改變了預期的文化。
但是我的問題是,每當我更改語言/文化時,它就會重定向到HOme /索引頁。
假設我在“注冊”頁面上,並且想更改文化,它不應將我重定向到“主頁/索引”頁面,而是要保留在同一頁面上。 那怎么可能?
謝謝你們提前。
請幫忙。
您可以重定向到同一頁面。 我相信,由於文化需要更新當前頁面上的所有資源,因此需要重新加載頁面。 您可以利用UrlReferrer.AbsoluteUri
。 做類似的事情:
public ActionResult SetCulture(string culture)
{
HttpContext.Session["culture"] = culture;
//all your logic
return Redirect(Request.UrlReferrer.AbsoluteUri);
}
如果要保留在同一頁面上,請使用ajax將區域性值發送到控制器。 這比嘗試重定向回當前頁面並不得不重新渲染視圖要有效得多。
在布局中,將您的鏈接生成為
<a href="#" class="setculture" data-culture="fr-FR">French</a>
<a href="#" class="setculture" data-culture="es-ES">Spanish</a>
然后在布局中包含一個腳本(包括jquery{version}.js
<script>
var url = '@Url.Action("SetCulture", "Culture")';
$('.setculture').click(function() {
var culture = $(this).data('culture');
$.post(url, { culture: culture }, function(data) {
});
});
</script>
然后用[HttpPost]
裝飾您的方法(更改數據,以便使用POST更合適)並刪除return RedirectToAction();
聲明。
請注意,您還可以從方法中返回一些信息,例如成功消息,並根據需要在當前視圖中顯示它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.