mvc html.hidden,MVC Html.HiddenFor在一个循环传递模型回控制器

@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而不是整个模型。如果你能够看一看,并让我知道你现在的想法会很好。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值