微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。