我在View中有一个表单,其中有多个字段。我将它们发送到控制器,我想将它们绑定到List。我怎样才能做到这一点?
现在我有了这段代码
查看
using (Html.BeginForm("GetVendorInvoice", "Sale", FormMethod.Get))
{
foreach (var invoice in Model.VendorInvoices)
{
@Html.Hidden("invoiceId", invoice.InvoiceId)
}
<input type="submit" value="Wszystkie na raz"/>
}
控制器:
public ActionResult GetVendorInvoice(List<string> invoiceIdList) {
...}
我读了一些文章说它应该工作但实际上并没有。 任何sugestions?
答案 0 :(得分:2)
您有属性名称 InvoiceId ,而在行动中,您的参数是 invoiceIdList ,这是错误的,列表在操作中将为空,请执行以下操作:
public ActionResult GetVendorInvoice(List<string> InvoiceId) {
...}
或者你可以这样做:
foreach (var invoice in Model.VendorInvoices)
{
@Html.Hidden("InvoiceId", invoice.InvoiceId)
}
动作:
public ActionResult GetVendorInvoice(List<string> invoiceId) {
...}
答案 1 :(得分:0)
操作:
public virtual ActionResult Index()
{
return View(new HomepageModel()
{
Strings = new[] {"one", "two", "three"}
});
}
[HttpPost]
public ActionResult Index(List<string> strings)
{
throw new Exception(String.Join(", ", strings));
}
查看:
@using (Html.BeginForm())
{
for (int i = 0; i < Model.Strings.Length; ++i)
{
@Html.HiddenFor(model => model.Strings[i])
}
<input type="submit" value="submit" />
}
您应该使用HiddenFor
辅助方法而不是隐藏方法,因为这是强类型的,并且会确保您的视图与模型匹配。使用索引器将为隐藏字段生成正确的名称。
答案 2 :(得分:0)
我找到了答案。首先是一个错误。视图中的归档名称与控制器中的参数名称不同。当我修复这个时,我有一串用逗号分隔的隐藏字段值。现在我必须拆分这个字符串,而且现在正常。 谢谢你的努力。