将数据(来自html表,仅由复选框选择的行)作为数组从javascript传递到MVC控制器

时间:2014-05-21 05:26:53

标签: asp.net-mvc

我希望从视图到控制器的数据只使用html表中的复选框选择的行。 我有这个ViewModel,请参阅下面的内容:

public class ConsignGroupsViewModel
{
    public int SKU { get; set; }
    public int consignmentid { get; set; }
    public string ShortName { get; set; }
    public string Supplier { get; set; }
    public int SupplierId { get; set; }
    public string PharmaName { get; set; }
}

查看:

<table width="100%" border="0" cellspacing="0" cellpadding="0" class="sortable" 
       id="myTable1">
  <thead>
    <tr>
      <th>Item Name</th>
      <th>Manufacturer</th>
      <th>Supplier</th>
      <th>PO</th>
    </tr>
  </thead>

  @foreach(var item in Model)
  { 
    @foreach(var grp in item.Take(1))
    {
    <tr>
      <td>@grp.ShortName @Html.HiddenFor(modelItem=>grp.SKU,"SKUs")</td>
      <td>@Html.DisplayFor(modelItem => grp.PharmaName)</td>
      <td>@Html.DisplayFor(modelItem => grp.Supplier)</td>
      <td><input type ="checkbox" name=PO value="@grp.SupplierId" 
                 title="@grp.SupplierId" class="checkbox chk" /></td>
    </tr>
    } 
  }
</table>

我已将视频分组并在视图中显示如上所示。我想选中复选框并在提交按钮上,我只需将所选行的值传递给视图。请帮助。

2 个答案:

答案 0 :(得分:0)

尝试以下代码段,这将获取由#

分隔的所有选定值
    var cBoxes = document.getElementsByName('PO');
    var selectedVal = '';
    for(var i=0;i<cBoxes.length;i++){
    var cBox = cBoxes[i]
        if(cBox.checked){
            selectedVal  =selectedVal+cBox.value+'#';
        }
    }
    console.log(selectedVal);

答案 1 :(得分:0)

您可以在控制器中使用FormCollection并使用它访问此值。 假设你的控制器动作是

public ActionResult Action(FormCollection表单) {    形式[ “PO”]; //它将以逗号分隔格式为您提供已检查记录的供应商ID。 }