路由中的动态默认参数 table
Dynamic default parameter in routing table
我正在为我的应用程序配置路由 table,我想捕获未指定语言的路由并重定向到指定语言页面。现在我只在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) { }
}
我通过在我的 Global.asax 文件中添加 Application_BeginRequest(Object, EventArgs) 方法解决了我的问题,我在其中对本地化服务做了同样的工作,并重定向到指定另一种语言的路由。现在这个方法在每个请求开始时被调用,它不是 100% 好,对我来说,但它正在工作。
我正在为我的应用程序配置路由 table,我想捕获未指定语言的路由并重定向到指定语言页面。现在我只在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) { }
}
我通过在我的 Global.asax 文件中添加 Application_BeginRequest(Object, EventArgs) 方法解决了我的问题,我在其中对本地化服务做了同样的工作,并重定向到指定另一种语言的路由。现在这个方法在每个请求开始时被调用,它不是 100% 好,对我来说,但它正在工作。