Как получить доступ к ModelState из ActionFilter?
Я строюActionFilter
повторно использовать некоторый код для простого блока спама - в основном то, что я делаю, это то, что у меня естьHtml Helper
метод, который отображает текстовое поле ввода и скрытый ввод, и в ActionFilter я проверяю, являются ли эти два значения одинаковыми или нет. Если нет, я хочу использовать остальную часть моей логики проверки и добавитьModelStateError
кModelState
, но как мне это сделать? Как мне добавитьModelStateError
из которогоActionFilter
?
ОБНОВЛЕНИЕ: Вот код, с которым я пытаюсь. Когда я тестирую действие контроллера, которое имеет этот атрибут,ModelState.IsValid
все еще возвращаетсяtrue
хотя я не передаю ни одно из требуемых значений формы:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var r = filterContext.HttpContext.Request;
if (r.Form["sixtimesnine"] != r.Form["fourtytwo"] || string.IsNullOrEmpty(r.Form["sixtimesnine"]) || string.IsNullOrEmpty(r.Form["fourtytwo"]))
{
filterContext.Controller.ViewData.ModelState.AddModelError("Spam", this.ErrorMessage);
}
base.OnActionExecuting(filterContext);
}
ЭтоActionMethod
:
[ValidateAntiSpam(ErrorMessage = "Spambotar får inte.")]
public ActionResult Write(GuestbookPost postToCreate)
{
if (ModelState.IsValid)
{
_posts.Add(postToCreate);
return RedirectToAction("Index");
}
return View();
}
Я просто заметил, что если я установлю точку останова внутриOnActionExecuting
Метод и нажмите «Отладочные тесты», точка останова никогда не достигается. Почему?