2012-07-12 49 views
0

我有一個頁面上的複選框列表,但是,他們的值沒有得到控制器。CheckBox的值沒有進入控制器

ListViewModel是我在這個視圖中需要的所有模型。 Techniques是來自數據庫的Technique的列表。 Technique具有TechiqueIDType作爲屬性。 tech是一個布爾陣列技術類型

@model ListViewModel 
@foreach (var item in Model.Techniques){ 
       <div> 
        @Html.CheckBoxFor(m => m.tech[item.TechniqueID]) 
        @item.Type 
       </div> 
      } 

任何想法,爲什麼tech[]爲空控制器的尺寸相同?它應該在控制器tech[0] = falsetech[1] = false等等上。

輸出:

<div> 
    <input data-val="true" data-val-required="The Boolean field is required." id="tech_1_" name="tech[1]" type="checkbox" value="true" /><input name="tech[1]" type="hidden" value="false" /> 
    Slippers, Distracting Tasks 
</div> 
<div> 
    <input data-val="true" data-val-required="The Boolean field is required." id="tech_2_" name="tech[2]" type="checkbox" value="true" /><input name="tech[2]" type="hidden" value="false" /> 
    Hallway Placement 
</div> 
+0

什麼是輸出HTML看起來像你的複選框? – 2012-07-12 17:32:51

+0

您確實需要爲ListViewModel以及任何嵌套類型提供代碼。 – 2012-07-12 17:36:35

回答

1

你的問題是,控制列表必須是0依據和順序。你的第一項是基於1.

如果你需要保持這個,那麼你將需要爲此編寫一個自定義模型綁定。簡單的解決方案可能是簡單地從TechniqueID中減去一個,然後在使用它時將其添加回來。

另一種選擇是添加名稱爲tech [0]的隱藏字段,並忽略郵件列表中的第一項。

+0

這是問題...謝謝...好工作!我現在覺得很蠢 – Valter 2012-07-12 17:48:39

1

你不能正確地建立你的html。模型聯編程序不能像這樣綁定輸入名稱。請參考article,它解釋瞭如何將模型綁定到列表。 從文章:

HTML輸出,你正在尋找:

<form method="post" action="/Home/Create"> 

    <input type="text" name="[0].Title" value="Curious George" /> 
    <input type="text" name="[0].Author" value="H.A. Rey" /> 
    <input type="text" name="[0].DatePublished" value="2/23/1973" /> 

    <input type="text" name="[1].Title" value="Code Complete" /> 
    <input type="text" name="[1].Author" value="Steve McConnell" /> 
    <input type="text" name="[1].DatePublished" value="6/9/2004" /> 

    <input type="text" name="[2].Title" value="The Two Towers" /> 
    <input type="text" name="[2].Author" value="JRR Tolkien" /> 
    <input type="text" name="[2].DatePublished" value="6/1/2005" /> 

    <input type="submit" /> 
</form> 

示例代碼來實現這樣的輸出:

<% for (int i = 0; i < 3; i++) { %> 

    <%: Html.TextBoxFor(m => m[i].Title) %> 
    <%: Html.TextBoxFor(m => m[i].Author) %> 
    <%: Html.TextBoxFor(m => m[i].DatePublished) %> 

<% } %> 
+0

這工作....謝謝...幹得好!我現在感到很蠢。 – Valter 2012-07-12 17:47:37