2012-05-12 15 views
1

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

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

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

[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(); 
} 
+0

パブリッククラスResponseModel { public int Limit {get;セット; } } – kheya

答えて

2

それはあなたのResponseModelは、[必須]のようないくつかのデータアノテーション付きプロパティを持っている可能性があり、あなたのラジオボックスをオフにしたときにプロパティの値を取得していないこと。

状態を無効にすると(デバッガをチェックインすることにより)モデルをポストし、値を送信します。


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

+0

私はすでにそれを確認しました。パブリッククラスResponseModel {public int Limit {get;セット; }} – kheya

+0

大きなキャッチハサン。修正は簡単でした。ドロップダウンにデフォルトで選択された値の値を追加しました。 – kheya

関連する問題