我有以下 ASP MVC RAZOR 代码:
@foreach (var prod in Model.allProducts)
{
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="accordion2" href="#collapse@(i)">
<h4 class="widgettitle" id="Title">> @prod.Description_VC</h4>
</a>
</div>
<div id="collapse@(i)" class="accordion-body collapse" style="height: 0px;">
<div class="accordion-inner" style="margin-left: 10px;">
<div style="padding-bottom: 10px;">
<strong>Total for product:</strong>
@Html.TextBoxFor(o => o.OfferHeaders.Where(p => p.Product_ID == prod.Product_ID).FirstOrDefault().Amount_DEC)
</div>
</div>
</div>
@{i++;}
<div style="clear:both;"></div>
</div>
}
但是为每个 TextBoxFor 控件生成的 HTML 具有相同的名称 Amount_DEC
,因此,当我尝试将表单发回时,我的 View 模型中的所有属性都为 null 。如何确保我的 HTML 控件获得唯一的名称,以便模型绑定(bind)器可以在 POST 中使用它们?
最佳答案
如果您的方法期望模型为 IEnumerable<...>
你可以使用Html.TextBox
助手而不是 Html.TextBoxFor
:
@Html.TextBox(string.Format("ModelName[{0}].ModelField", i), yourValueHere)
假设您的型号名称是ModelName
它有属性 ModelField
关于c# - 在循环内使用 .Where().FirstOrDefault() 时,ASP MVC 中的名称不唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21848482/