2015-09-26 51 views
3

我正在開發ASP.NET MVC應用程序。我的表單的模型如下所示:獲取ASP.NET MVC中的複選框值操作

public class ViewModel 
{ 
    public bool IsActive { get; set; } 
} 

在我的表單中,我有以下HTML。

<label class="checkbox pull-left"> 
    <input type="checkbox" id="IsActive" name="IsActive" data-val="true" data-val-required="The IsActive field is required."> 
    <i></i>Active/Deactive 
    <input name="IsActive" type="hidden"> 
</label> 

當我發佈表單時,模型中的IsActive值始終爲false。但是,模型中的名稱屬性具有值。我已經通過在下面設置了一個斷點來測試它:

[HttpPost] 
public ActionResult MyAction(ViewModel model) 
{ 
    // model.IsActive always is false 
} 

爲什麼Checkbox值沒有設置?

我應該怎麼做才能解決這個問題?

回答

5

您未在複選框或與其關聯的隱藏輸入中設置value屬性,因此未發佈任何值並且您的屬性值爲其默認值(false)。它需要是

<label class="checkbox pull-left"> 
    <input type="checkbox" id="IsActive" name="IsActive" value="true" ....> 
    <i></i>Active/Deactive 
    <input name="IsActive" type="hidden" value="false"> 
</label> 

附註:是否有任何理由你不使用@Html.CheckBoxFor(m => m.IsActive)來生成正確的html?

1

您必須設置複選框的值attr才能獲取該值。

數據-VAL是不同的,以HTML不作爲值:attr或MVC

0

我建議你使用剃刀和@Html.CheckBoxFor(m => m.IsActive)

+1

通常在第一次嘗試本身時詳細說明答案,或者OP稍後會問你同樣的問題...... – displayName