0

良い一日!

ASP.NET MVC は、GET/POST サイクル中に入力の値を内部に格納ModelStateし、検証エラーが発生した場合にそれらを自動的に入力に入れることで、うまく機能します。

しかし、私のフォームには、検証エラー中に保持されるべきではない CAPTCHA フィールドがあります (CAPTCHA 値はリクエストごとに再生成されます)。

設定してこれを達成しようとしました

if (TryUpdateModel(model))
{
    // ...
}
else
{
    ModelState.Remove("CaptchaValue"); // ModelState does have CaptchaValue 
    return View(model); // CaptchaValue is empty in model
}

しかし、うまくいきません。

ModelState に保存されないように、モデル フィールドに適用できる属性があるのでしょうか?

前もって感謝します!

4

2 に答える 2

1

action パラメーターで bind 属性を使用して、モデル バインディングの動作を制御できます。

public ActionResult YourActionName([Bind(Exclude = "CaptchaValue")]ModelType model)
于 2011-06-16T09:51:52.957 に答える
0

近くのスレッドMVCでこれを見つけました-投稿のテキストボックスの値を変更するにはどうすればよいですか?:

ModelState.SetModelValue("CaptchaValue", new ValueProviderResult(String.Empty, String.Empty, System.Threading.Thread.CurrentThread.CurrentCulture));

しかし、それは少し醜いようです。

于 2011-06-16T09:05:20.950 に答える