Sto provando a creare il proprio attributo di filtro per supportare il multilinguismo. L'idea è semplice. URL sta per lingua.in MVC4 mostra ed errore che devo implementare qualche interfaccia ma l'ho già fatto
- * http: //host.ext/ it/rest_of_the_url * si aprirà in inglese e
- * http: //host.ext/ hy/rest_of_the_url * si aprirà in armeno.
Il problema è che in fase di esecuzione si dice che MultilingualActionFilterAttribute
Ecco il testo di errore "Il determinata istanza di filtro deve implementare una o più delle seguenti interfacce di filtro: IAuthorizationFilter, IActionFilter, IResultFilter, IExceptionFilter."
Qui lo sto usando come filtro globale.
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());
}
}
}
Qui lo sto definendo.
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);
}
}
}
Che tutto sembra OK. Si tratta di un nuovissimo sito MVC4 o di uno aggiornato da MVC3? Potrebbe essere un problema di versione della DLL - hai provato a cancellare i tuoi file temporanei ASP.NET? – levelnis
stai usando web api? –