为什么我的视图模型 return 只有最后一个值而 post 到控制器?
Why does my viewmodel return only last value while post to controller?
我使用 Beginform
方法从视图向控制器发送表单,并通过隐藏字段传递 ID 列表。
但它 returns 只是列表中的最后一个值。
View.cshtml
:
@using(Html.BeginForm("makepayment","home",FormMethod.Post))
{
if (Model != null)
{
for (var i = 0; i < Model.Count; i++)
{
@Html.HiddenFor(m => Model[i].cart.vid)
}
}
@Html.TextBoxFor(m => m[0].payment.cname);
@Html.TextBoxFor(m => m[0].payment.number);
@Html.TextBoxFor(m => m[0].payment.securitycode);
@Html.TextBoxFor(m =>m[0].payment.expdate);
<input type="submit" value="pay" />
}
它只是 returns 最后一个值。循环不工作,因为我用了IEnumerable
,但我不知道如何解决
这听起来像是一个闭包问题,参见 Understanding Closures
试试这个:
for (var i = 0; i < Model.Count; i++) {
var index = i;
@Html.HiddenFor(m => Model[index].cart.vid)
}
我使用 Beginform
方法从视图向控制器发送表单,并通过隐藏字段传递 ID 列表。
但它 returns 只是列表中的最后一个值。
View.cshtml
:
@using(Html.BeginForm("makepayment","home",FormMethod.Post))
{
if (Model != null)
{
for (var i = 0; i < Model.Count; i++)
{
@Html.HiddenFor(m => Model[i].cart.vid)
}
}
@Html.TextBoxFor(m => m[0].payment.cname);
@Html.TextBoxFor(m => m[0].payment.number);
@Html.TextBoxFor(m => m[0].payment.securitycode);
@Html.TextBoxFor(m =>m[0].payment.expdate);
<input type="submit" value="pay" />
}
它只是 returns 最后一个值。循环不工作,因为我用了IEnumerable
,但我不知道如何解决
这听起来像是一个闭包问题,参见 Understanding Closures
试试这个:
for (var i = 0; i < Model.Count; i++) {
var index = i;
@Html.HiddenFor(m => Model[index].cart.vid)
}