MVC MapRoute 可选参数使用如默认值

问题描述

我正在尝试使用多语言路由...

我已经为路由映射创建了资源文件,就像这里

german-university German-university //(en-US)

德国大学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: "",action = "Index" }
        );

我的 Url.Action 和结果

Url.Action("ShowUniversiteKursuMenu","Universite",new{ language= Thread.CurrentThread.CurrentUICulture })

我想要的结果,如果我改变语言

de-DE/deutschland-universitat

en-US/德国大学

这不应该工作,也不会作为结果,但结果是这样的......

de-DE/德国大学

ar-SA/德国大学

tr-TR/德国大学

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)