model-view-controller - MVC MapRoute 可选参数与默认值一样使用
问题描述
我正在尝试使用多语言路由...
我已经为路由映射创建了资源文件,就像这里
关键 价值
德国大学德国大学 //(zh-CN)
German-university deutschland-universitat //(de-DE)
...........
在 routeconfig 中,我尝试了多种使用可选参数和没有可选参数的方法,但无法为Url.Action获得正确的结果
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
#region Universite
ResourceManager myResourceClass =
new ResourceManager(typeof(RouteResource));
var langs = new List<string>();
langs.Add("tr-TR");
langs.Add("de-DE");
langs.Add("ar-Sa");
langs.Add("en-US");
foreach (string lang in langs)
{
ResourceSet resourceSet =
myResourceClass.GetResourceSet(new System.Globalization.CultureInfo(lang), true, true);
routes.MapRoute(
name: "UnvUlkeEyaletSehir"+lang,
url: "{language}/" + resourceSet.GetString("german-university") + "/{ulke}/{eyalet}/{sehir}",
defaults: new
{
controller = "Universite",
action = "ShowUniversiteKursuMenu",
language=lang,
ulke = "",
eyalet = "",
sehir = "",
}
);
}
#endregion
foreach (var lang in langs)
{
routes.MapRoute(
name: "Default" + lang,
url: "{language}",
defaults: new { controller = "Home", action = "Index", language = lang }
);
}
routes.MapRoute(
name: "Default-en-US-",
url: "",
defaults: new { controller = "Home", action = "Index" }
);
我的 Url.Action 和结果
Url.Action("ShowUniversiteKursuMenu","Universite",new{ language= Thread.CurrentThread.CurrentUICulture })
我想要的结果,如果我改变语言
de-DE/德国大学
en-US/德国-大学
这不应该工作,也不是结果,但结果是这样的......
de-DE/德国大学
ar-SA/德国大学
tr-TR/德国大学
解决方案
推荐阅读
- node.js - NodeJS杀死永远运行的子进程
- sql - 公式拾取几乎所有值
- c# - 如何在 CouchDB 中查找错误请求的原因
- c++11 - 通过 C++ Eigen 库使用英特尔 MKL Sparse BLAS 扩展
- python - 如何在python中扫描字符串文字时修复eol
- python - 将具有不同索引的多个数据帧组合成单个图时,Pandas 或 matplotlib 错误地移动 x 值
- javascript - 无法在模式内的列表元素上使用单击功能
- javascript - 无法在第一次按键时自动完成
- typescript - 构造半动态对象时的类型安全?
- c# - 过滤类型 A 的列表,A 包含类型 B 的列表,并在 C# 中对 B 的元素的条件