我有一个数据表,每行显示商店的详细信息 - 可以有任意但唯一的ID - 和商店编号 - 也是唯一的和非顺序的 - 以及其他信息。
当我选择商店编号时,我想显示商店的详细信息。
public class StoreViewModel
{
public FormatViewModel Formats { get; set; }
public List<StoreDetailsViewModel> StoreData { get; set; }
}
格式 包含用于实现MvcCheckBoxList的数据,并在通过FormMethod.GET更新复选框时更新StoreData。
商店模式:
public class StoreDetailsViewModel
{
public int StoreID { get; set; }
public int StoreNo { get; set; }
public string StoreFormat { get; set; }
public string Version { get; set; }
public int CellNo { get; set; }
[ForeignKey("CellNo")]
public virtual Cell Cell { get; set; }
}
索引页面显示商店表:
@using (Html.BeginForm("Details", "Store", FormMethod.Post))
{
<table class="table table-condensed table-bordered table-hover table-striped small">
<tr>
@*<th class="text-center"></th>*@
<th class="text-center">No.</th>
<th class="text-center">Format</th>
<th class="text-center">CBO Version</th>
<th class="text-center">Cell</th>
<th class="text-center"></th>
</tr>
@foreach (var item in Model.StoreData)
{
<tr>
<td class="text-center">
@Html.Hidden("List_StoreIDs", @item.StoreID)
@Html.Hidden("id", @item.StoreID)
@item.StoreNo
</td>
<td class="text-center">@Html.DisplayFor(modelItem => item.StoreFormat)</td>
<td class="text-center">@Html.DisplayFor(modelItem => item.Version)</td>
<td class="text-center">@Html.DisplayFor(modelItem => item.CellNo)</td>
<td>
<input type="submit" name="submit" value=@item.StoreNo />
</td>
</tr>
}
</table>
}
我无法工作的是传递商店列表中所选行的StoreID(ActionLink可以轻松工作,但我还需要传回List_StoreID)。
我希望@ Html.Hidden(“id”)能够正常工作,但总是1 。
控制器
public ActionResult Details(int? id, int[] List_StoreIDs, string submit, string book)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Store store = db.Stores.Find(id);
if (store == null)
{
return HttpNotFound();
}
... do something
}
有什么建议吗?
此致 克雷格
答案 0 :(得分:1)
如果您让控制器接受StoreViewModel
然后使用Html.HiddenFor
,数据将在控制器中可用。
答案 1 :(得分:1)
我看到的问题是,您在表的每一行中都有一个隐藏字段和提交按钮,但所有行都采用相同的形式。因此,传递给控制器的id将是表单中所有id的列表(可能以&#34; 1&#34;开头),而不是您点击的特定ID。
答案 2 :(得分:1)
每行都有一个提交按钮。是否要在单击其中一个提交按钮时提交整个表单,或者您是否只对包含提交按钮的行中更改的详细信息感兴趣?
如果是后者,则每行可以有一个表单,然后每个表单的“id”值都是正确的(您可能将表单放在一个元素中,并使用Bootstrap css格式化表单)< / p>