2012-05-12 46 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

public class ResponseModel public int Limit {get;組; } } – kheya

回答

2

這可能是因爲你的ResponseModel有像[必需的一些數據註解的一個屬性,如果沒有選擇你的單選框,物業沒有得到一個值。

發佈您的模型併發布狀態無效時收到的值(通過簽入調試器)。


既然你只有一個屬性,那就是整數。您的模型狀態無效,因爲整數不能具有空值。當你把它隱藏起來的時候,模型沒有int屬性的值。或者用無線電盒上的隱藏字段替換下拉列表,或將其設置爲空的int。

+0

我已經檢查過。 public class ResponseModel {public int Limit {get;組; }} – kheya

+0

很棒的哈桑。修復很簡單。剛剛在下拉列表中添加了默認選定值的值。 – kheya