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());
}
}
고맙습니다! 이것은 내가 한 것 같이 보인다. 우리는 EPiServer에서 일반적인 폴백 (fallback) 동작을 없앨 수 있었고 문제는 EPiServer의 버그 때문이었습니다. 내가 프랑스어 페이지에 있었고 다음과 같은 @ Url.PageUrl (page.LinkURL)과 같이 내보기에서 스웨덴어 페이지에 대한 호출이 있었다면. 페이지가 스웨덴어 일지라도 "LinkURL"은 실제로 "epslanguage = fr"을 포함합니다. 나는 URL을 위해 내 자신의 HtmlHelper를 사용하여 그것을 해결했다 : https://gist.github.com/anonymous/8565072 – Andreas
감사하다는 것을 알아 두는 것이 좋다! – aolde