为什么我的视图模型 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)
}