1

我有根据具体规则设置当前语言的需求。我需要访问当前页面和当前用户才能做出决定。我查看了文档,它说要在 PageBase 上使用 InitializeCulture 方法。我的项目使用的是 MVC 而不是 WebForms,MVC 中 InitializeCulture 的等价物是什么?

4

1 回答 1

4

您可以实现 IAuthorizationFilter 并在 OnAuthorization 中进行检查。也可以在 IActionFilter 中执行此操作,但之前调用了 OnAuthorization。您将可以访问当前的 HttpContext 并从那里获取当前页面数据。

public class LanguageSelectionFilter : IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationContext filterContext)
    {
        // access to HttpContext
        var httpContext = filterContext.HttpContext;

        // the request's current page
        var currentPage = filterContext.RequestContext.GetRoutedData<PageData>();

        // TODO: decide which language to use and set them like below
        ContentLanguage.Instance.SetCulture("en");
        UserInterfaceLanguage.Instance.SetCulture("en");
    }
}

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        // register the filter in your FilterConfig file.
        filters.Add(new LanguageSelectionFilter());
    }
}
于 2014-01-21T14:53:38.467 回答