ActionFilter
単純なスパム ブロックのコードを再利用するために を構築しています。基本的にHtml Helper
は、入力テキスト ボックスと非表示の入力をレンダリングするメソッドを用意し、ActionFilter で 2 つの値が同じかどうかを確認します。 . そうでない場合は、残りの検証ロジックを活用して に を追加したいModelStateError
のModelState
ですが、どうすればよいですか? ModelStateError
内にfromを追加するにはどうすればよい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
メソッド内にブレークポイントを設定して「テストのデバッグ」をクリックすると、ブレークポイントにヒットしないことに気付きました。なんで?