我在OnActionExecuting中设置了文化语言。但是我的验证方法(FluentValidation)甚至在OnActionExecuting执行之前就已经执行了。但我需要在OnActionExecuting之前,在AbstractValidator中需要的文化语言。
internal class MeetingAbstractValidator : AbstractValidator<MeetingAbstract>
{
public MeetingAbstractValidator()
{
RuleFor(x => x.SPEPaperNumberText)
.NotEmpty()
.When(IfValueIsYes)
.WithMessage(i18n_Models_Abstract.RequiredField);
}
}
private bool IfValueIsYes(MeetingAbstract model)
{
return model.HasMaterialPublishedBySPEText.Equals(i18n_Models_Abstract.AbstractYes);
}
public class LanguageFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var request = filterContext.HttpContext.Request;
string cultureName = null;
var cultureCookie = request.Cookies["_culture"];
if (request.UserLanguages != null)
cultureName = cultureCookie != null ? cultureCookie.Value :
request.UserLanguages[0];
cultureName = CultureHelper.GetImplementedCulture(cultureName); // This is safe
Thread.CurrentThread.CurrentCulture = new
System.Globalization.CultureInfo(cultureName);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
base.OnActionExecuting(filterContext);
}
}如何处理这个问题?我可以覆盖OnActionExecuting吗?
发布于 2014-06-03 03:48:59
我建议你使用Application_BeginRequest事件,并把你的文化逻辑放在那里。这在集成管道级别上执行,在MVC被事件委托来处理请求之前很久。
https://stackoverflow.com/questions/24001731
复制相似问题