다국어 지원을 위해 고유 한 필터 속성을 만들려고합니다. 아이디어가 간단합니다. URL은 언어를 나타냅니다.은 몇 가지 인터페이스를 구현해야하지만 오류가 발생했지만 이미 완료되었습니다.
- * HTTP : //host.ext/ 엔/rest_of_the_url *이 영어로 열리고
- * HTTP : //host.ext/ HY/rest_of_the_url *이 아르메니아어에서 열립니다.
문제는 실행에가 MultilingualActionFilterAttribute 여기
오류 텍스트는 말한다이다 "주어진 필터 인스턴스는 다음과 같은 필터 인터페이스 중 하나 이상을 구현해야합니다. IAuthorizationFilter, IActionFilter, IResultFilter, IExceptionFilter을"
여기서는 글로벌 필터로 사용하고 있습니다.
namespace TIKSN.STOZE.WebApp
{
public class FilterConfig
{
public static void RegisterGlobalFilters(System.Web.Mvc.GlobalFilterCollection filters)
{
filters.Add(new TIKSN.STOZE.Common.MultilingualActionFilterAttribute());
filters.Add(new System.Web.Mvc.HandleErrorAttribute());
}
}
}
여기에 정의하고 있습니다. 당신이 웹 API를 사용하는 경우 IActionFilter
이 모두 System.Web.Http.Filters
및 System.Web.Mvc
네임 스페이스에 정의되어
namespace TIKSN.STOZE.Common
{
public class MultilingualActionFilterAttribute : System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
{
string language = System.Convert.ToString(filterContext.RouteData.Values["language"]);
System.Diagnostics.Debug.Print("Requested language is '{0}'", language);
language = Helper.PickUpSupportedLanguage(language);
System.Diagnostics.Debug.Print("Supported language is '{0}'", language);
if (language == string.Empty)
{
filterContext.HttpContext.Response.RedirectToRoutePermanent(new { language = Common.Properties.Settings.Default.DefaultLanguageCode });
}
language = Helper.TryToPickUpSupportedLanguage(language);
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(language);
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(language);
}
}
}
. 이것은 새로운 MVC4 사이트입니까, 아니면 MVC3에서 업그레이드 된 사이트입니까? dll 버전 문제 일 수 있습니다 - 임시 ASP.NET 파일을 삭제하려고 시도 했습니까? – levelnis
웹 API를 사용하고 있습니까? –