0

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

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

关键 价值

德国大学德国大学 //(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/德国大学

4

0 回答 0