@model IEnumerable
@{
ViewBag.Title = "Buy Products";
}
@foreach (var product in Model)
{
using (Html.BeginForm())
{
@Html.HiddenFor(Model => product)
... More Controls and stuff...
}
}
并提交我想我的模型的选择实例传递回我的控制器:
[HttpPost]
public ActionResult Index(ProductItem product)
{
... Do Stuff ...
return View();
}
但是我已经尝试了一些东西,但似乎总是得到空传递到控制器......请能有人帮我指出了正确的方向?
编辑
我不真正需要的是整个模型的实例,我可以从ID控制器内得到这个 - 所以我曾尝试以下:
@model IEnumerable
@{
ViewBag.Title = "Buy Products";
}
@foreach (var product in Model)
{
using (Html.BeginForm())
{
@Html.HiddenFor(Model => product.ID)
@Html.TextBox("qty", "1", htmlAttributes: new { @style = "width: 30px;" })
... More Controls and stuff...
}
}
哪些职位的控制器:
[HttpPost]
public ActionResult Index([Bind(Include = "ID")] int? ID, [Bind(Include = "qty")] int? qty)
{
return null;
}
该文本框不是模型的一部分,因为它是用户输入 - 该值很好地传递到acti ons参数,但是我仍然在HiddenFor控件中获取ID为空。这是否与控制的命名有关?我似乎无法将名称添加到HiddenFor控件。
我知道这对原始问题提出了不同的看法,但我希望你仍然可以提供帮助。
我把关于BeginForm在循环内部的注释 - 为列表中的每个项目创建...是否有一个简单的替代方案(注意我还没有尝试过任何东西)。
2017-07-31
CJH
+0
您的代码存在多个问题。首先,你不能绑定一个复杂的对象来形成控制(如果模型需要绑定每个属性)。并有集合中的每一项形式是没有意义的 - 你只能在一个时间提交一个表单,并在任何情况下,你会生成具有模型 –
+0
无论是没有关系的投入使用产生一个表格表单控件一个'for'环或'EditorTemplate',并提交于一身的作用(参见[这个答案](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943 )),或者如果你想在同一时间,使用Ajax更新只有一个项目或具有重定向你对页进行编辑该项目 –
+0
感谢两个......在那光一个链接我有一点点更新问题通过ID而不是整个模型。如果你能够看一看,并让我知道你现在的想法会很好。 –