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で保持されないようにするために、モデルフィールドに適用できる属性がありますか?
ありがとうございます!
あなたはどうなる拡張メソッドModelState.ClearValue(文字列PropertyName意味)を行うことにより、これに少し糖衣構文を追加することができますあなたのためのSetModelValueとコードを少しきれいにする必要があります。 – Chao
しかし、文字列だけでなく、どのタイプのフィールド(値型と参照型の両方)でも動作させるにはどうすればいいですか? – artvolk
あまり確かではありませんが、モデルバインダーを掘り下げてタイプを試してからリフレクションでインスタンス化する必要があります。 – Chao