簡體   English   中英

ASP.NET MVC中的全球化與頁面重定向有關

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM