路由表中的动态默认参数

时间:2019-05-16 15:39:52

标签: c# asp.net-mvc routing episerver

我正在为我的应用程序配置路由表,并希望捕获未指定语言的路由并重定向到使用语言页面指定的路由。现在,我仅在RouteConfig中映射路由时找到了解决方案,但问题是Initialize()仅被调用一次,默认参数仅被计数一次。

[InitializableModule]
[ModuleDependency(typeof(ServiceContainerInitialization))]
public class RouteConfig : IInitializableModule
{
    public void Initialize(InitializationEngine context)
    {
        LocalizationService localizationService = LocalizationService.Current;
        var currentLanguage = localizationService.GetString($"/locale/{ContentLanguage.PreferredCulture.Name}", ContentLanguage.PreferredCulture.Name);

        RouteTable.Routes.MapContentRoute(
            "EpiSeverRegisteredRoute",
            "{language}/{node}/{action}",
            new { language = currentLanguage, action = "index" });
    }

    public void Uninitialize(InitializationEngine context) {
    }

    public void Preload(string[] parameters) { }
}

1 个答案:

答案 0 :(得分:0)

我通过在Global.asax文件中添加Application_BeginRequest(Object,EventArgs)方法解决了我的问题,在该文件中,我对本地化服务进行了相同的工作,然后重定向到指定的另一种语言进行路由。现在,在每次请求开始时都会调用此方法,对我来说,这不是100%好的方法,但是它可以工作。

https://docs.microsoft.com/en-us/dotnet/api/a4swift_mrsr.global.application_beginrequest?view=bts-swift-dotnet