質問

良い一日!

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top