【发布时间】:2014-03-23 10:19:47
【问题描述】:
我正在使用以下路由来满足我的文化要求:
routes.MapRoute(
name: "SpecificCulture",
url: "{culture}/{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
culture = ""
}
);
我也有以下过滤器:
public class CultureFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
var cultureName = (filterContext.RouteData.Values["culture"] as string) ?? string.Empty;
if (!string.IsNullOrWhiteSpace(cultureName) && CultureHelper.IsValidCulture(cultureName))
{
// e.g if requested cultureName is EN-ZZ the below method will get EN-US
cultureName = CultureHelper.GetImplementedCulture(cultureName);
filterContext.RouteData.Values["culture"] = cultureName;
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
}
}
}
正如您在 ActionFilterAttribute 上看到的那样,我正在根据请求的 url 获得大致的文化。
一切正常,但我想更改 url 也适用于用户请求为 EN-ZZ 而我得到 EN-US 的上述场景。
有可能吗?
非常感谢
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-routing actionfilterattribute