ModelStateに価値が保存されるのを防ぎます
-
28-10-2019 - |
質問
良い一日!
ASP.NET MVCは、Get/Post Cycle内の入力値を保存することで良い仕事をします ModelState
検証エラーが発生した場合に、自動的に入力に入れます。
しかし、私のフォームには、検証エラー中に保存されるべきではないCaptchaフィールドがあります(各リクエストでCaptcha値は再生されます)。
設定によってこれを達成しようとしました
if (TryUpdateModel(model))
{
// ...
}
else
{
ModelState.Remove("CaptchaValue"); // ModelState does have CaptchaValue
return View(model); // CaptchaValue is empty in model
}
しかし、それはうまくいきません。
ModelStateの保存を防ぐために、モデルフィールドに適用できる属性がある可能性がありますか?
前もって感謝します!
解決 2
私はこれを近くのスレッドで見つけました MVC-投稿内のテキストボックスの値を変更する方法は?:
ModelState.SetModelValue("CaptchaValue", new ValueProviderResult(String.Empty, String.Empty, System.Threading.Thread.CurrentThread.CurrentCulture));
しかし、それは少し醜いようです。
他のヒント
アクションパラメーターでバインド属性を使用して、モデルの結合挙動を制御できます。
public ActionResult YourActionName([Bind(Exclude = "CaptchaValue")]ModelType model)
所属していません StackOverflow