2015-04-23 15 views
2

我試圖將複選框的值從視圖傳遞給控制器​​。 這裏是我的代碼將視圖中的複選框值傳遞給控制器​​MVC時發生空錯誤4

在模型:

public partial class ORDER_HEADER_INFO 
{ 
    //many other fields 
    public bool checkExport { get; set; } 
} 

在控制器:

[HttpPost] 
public void ExportCSV(List<Models.ORDER_HEADER_INFO> model) { 
     foreach (Models.ORDER_HEADER_INFO item in model) { 
       if (item.checkExport) { 
       //Do somethings 
       } 
     } 

在View:

@model IEnumerable<TIS.Models.ORDER_HEADER_INFO> 
@using (Html.BeginForm("ExportCSV", "MKP_004", FormMethod.Post)){ 
    <input type="submit" value="ExportCSV" /> 
    @foreach (var item in Model) 
    {DateTime deadline = new DateTime(2015, 04, 12); 
     var className = (item.PRODUCT_START_DATE >= deadline) ? "selected" : null; 
     <tr class="@className"> 
      <td> 
       @Html.ActionLink(item.ORDER_NO, "MKP_003", "MKP_003", new { id = item.ORDER_NO }, new { }) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.MODEL) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.PJNO) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.DELIVERY_DESTINATION) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.PRODUCT_START_DATE) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.FINISH_FLAG) 
      </td> 
      <td> 
       @Html.CheckBoxFor(modelItem => item.checkExport) 
      </td> 
     </tr>   
    } 
</table> 
} 

我預期的結果是我能得到的選擇了一覽物品然後與他們做一些工作。方法的參數。我曾嘗試:

List<Models.ORDER_HEADER_INFO> model 

IEnumerable<TIS.Models.ORDER_HEADER_INFO> model 

但是當我調試模式仍然是空。

非常感謝!

+1

你'foreach'循環產生重複'id'屬性(無效HTML)和'name'屬性(不能綁定到一個集合)的複選框。爲typeof ORDER_HEADER_INFO'使用自定義'EditorTemplate'的'for'循環來爲(int i = 0; i m [0] .checkExport) }'檢查html前後的差異 –

+0

當我使用for(int i = 0; i

+0

製作模型'@model IList '(或'List <...>') –

回答

0

正如其他人所說,你只需要重寫foreach是一個for循環,使其適用索引到HTML領域的name屬性,爲了讓模型綁定做的工作。更改foreach是:

@for (int i = 0; i < Model.Count(); i++) 
{DateTime deadline = new DateTime(2015, 04, 12); 
    var className = (Model[i].PRODUCT_START_DATE >= deadline) ? "selected" : null; 
    <tr class="@className"> 
     <td> 
      @Html.ActionLink(Model[i].ORDER_NO, "MKP_003", "MKP_003", new { id = Model[i].ORDER_NO }, new { }) 
     </td> 
     <td> 
      @Html.DisplayFor(m => m[i].Model) 
     </td> 
     <td> 
      @Html.DisplayFor(m => m[i].PJNO) 
     </td> 
     <td> 
      @Html.DisplayFor(m => m[i].DELIVERY_DESTINATION) 
     </td> 
     <td> 
      @Html.DisplayFor(m => m[i].PRODUCT_START_DATE) 
     </td> 
     <td> 
      @Html.DisplayFor(m => m[i].FINISH_FLAG) 
     </td> 
     <td> 
      @Html.CheckBoxFor(m => m[i].checkExport) 
     </td> 
    </tr>   
} 
相關問題