首页 > 解决方案 > 更改 URL 参数 MVC

问题描述

我有一个具有以下 URL 格式的 MVC 应用程序。

http://localhost:25825/en/applications

在哪里

目前我有以下更改语言。

<ul>
    <li><a href="~/en">@Resources.Global.LanguagesEnglish</a></li>
    <li><a href="~/tr">@Resources.Global.LanguagesTurkish</a></li>
</ul>

但这样做会清除 URL 的其余部分并转到主页。有没有办法在保留 URL 的剩余部分的同时更改语言?

还有路线翻译

.ForController<ApplicationController>()
.ForAction(x => x.Index())
.AddTranslation("uygulamalar")

所以

http://localhost:25825/en/applications

变成

http://localhost:25825/tr/uygulamalar

标签: c#asp.net-mvcrazor

解决方案


那将是完全有道理的!您的 href 是您的应用程序的基础,您无需执行任何操作来获取当前页面或附加特定页面。

一个简单的 JS 方式是一个基于某些属性(甚至可能是数据属性)获取正确路径的函数:

function getLang(lang){
  // this would be your URL and not just a console log
  console.log("~/" + lang + window.location.pathname);
}
<ul>
    <li><a href="#" onclick="getLang('en')">@Resources.Global.LanguagesEnglish</a></li>
    <li><a href="#" onclick="getLang('tr')">@Resources.Global.LanguagesTurkish</a></li>
</ul>

您还提到了 MVC,因此在服务器上构建 URL 可能最有意义:

<ul>
   @foreach(var resource in @Resources.Global.Where(x => x.Contains("Languages")).ToList())
{
      <li><a href='@($"~/{resource}/applications")'>@resource</a></li>
}    
</ul>

推荐阅读