簡體   English   中英

AbstractValidator與OnActionExecuting

[英]AbstractValidator Vs OnActionExecuting

我在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嗎?

我建議您使用Application_BeginRequest事件,並將您的區域性邏輯放在此處。 它在集成管道級別上執行,遠遠早於將事件委托給MVC來處理請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM