1

フォームが投稿されたときに呼び出されるコントローラーの更新アクションがあります。フォームには、ドロップダウンフィールドの表示を制御するラジオボタンがあります。ドロップダウンフィールドが表示されていて、フォームを投稿すると、データベースが正常に更新され、ModelStateが有効になります。

ドロップダウンフィールドを非表示にしてフォームを投稿すると、データベースが投稿および更新されます。ただし、ModelState.IsValid = falseであり、ドロップダウンはMissingvalueとして報告されています。

この問題を修正するにはどうすればよいですか?

[HttpPost]
public ActionResult Update(ResponseModel model)
{
   //ModelState.IsValid = false when dropdown field hidden

   //validate form fields
   //update database

   //if we are here, then db update successful
   AjaxResponse.AddJsonItem("msg", "Success");
   return Result();
}
4

1 に答える 1

2

ResponseModelに[必須]のようなデータ注釈が付けられたプロパティがあり、ラジオボックスのチェックを外すと、そのプロパティは値を取得しない可能性があります。

モデルを投稿し、状態が無効なときに受け取った値を投稿します(デバッガーにチェックインすることにより)。


プロパティが1つしかないため、それは整数です。整数はnull値を持つことができないため、モデルの状態は無効です。非表示にすると、モデルにはintプロパティの値がありません。ドロップダウンをラジオボックスの非表示フィールドに置き換えるか、null許容整数にします。

于 2012-05-12T02:17:18.747 に答える