我有以下代码:
<% foreach (var orderDetail in Model.OrderDetails) { %>
<div><%= Html.LabelFor( x => orderDetail.DateOfBirth)%></div>
<div><%= Html.TextBoxFor(x => orderDetail.DateOfBirth) %></div>
<% } %>
信息正在显示,但是,我无法单击标签并转到文本框,因为由于 foreach 循环,ID 属性正在重复。
<label for="orderDetail_DateOfBirth">DateOfBirth</label>
<input type="text" value="" name="orderDetail.DateOfBirth" id="orderDetail_DateOfBirth">
有人知道如何解决这个问题吗?
更新:
由于 UpdateModel() 也不起作用,所以我最终这样做了,有什么想法吗?
<%
int i = 0;
foreach (var orderDetail in Model.OrderDetails) { %>
<div><label for="DateOfBirth_<%=i %>_">Date of Birth</label></div>
<div><%= Html.TextBox("DateOfBirth[" + i + "]", orderDetail.DateOfBirth) %></div>
<% i++
} %>
最佳答案
看看 phil haack 的这篇文章
http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
在文章底部附近,它讨论了循环控件和使用数组索引等等。
这是从那里获取的基本语法,并进行了调整以适合您的情况。
<% for (int i = 0; i < Model.OrderDetails.count; i++) { %>
<%: Html.LabelForm(m => Model.OrderDetails[i].DateOfBirth) %>
<%: Html.TextBoxFor(m => Model.OrderDetails[i].DateOfBirth) %>
<% } %>
为了让模型绑定(bind)器正确处理这个问题,它必须具有顺序索引。但除此之外,这应该可行。
关于asp.net-mvc-2 - Html.LabelFor 在循环内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8576260/