Как получить доступ к 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 Метод и нажмите «Отладочные тесты», точка останова никогда не достигается. Почему?

Ответы на вопрос(1)

Ваш ответ на вопрос