Asp.net mvc 2 Html.labelfora在循环中
我有以下代码:Asp.net mvc 2 Html.labelfora在循环中,asp.net-mvc-2,Asp.net Mvc 2,我有以下代码: <% foreach (var orderDetail in Model.OrderDetails) { %> <div><%= Html.LabelFor( x => orderDetail.DateOfBirth)%></div> <div><%= Html.TextBoxFor(x => orderDetail.DateOfBirth) %></div> <
<% foreach (var orderDetail in Model.OrderDetails) { %>
<div><%= Html.LabelFor( x => orderDetail.DateOfBirth)%></div>
<div><%= Html.TextBoxFor(x => orderDetail.DateOfBirth) %></div>
<% } %>
orderDetail.DateOfBirth)%>
orderDetail.DateOfBirth)%>
信息正在显示,但是,我无法单击标签并转到文本框,因为由于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++
} %>
出生日期
您可以在循环内部创建自定义id
我将使用HtmlatAttributes来定义id。
例如:
orderDetail.DateOfBirth)%>
orderDetail.DateOfBirth,新的{id=“orderDetailDateOfBirth_”+i++})%>
或者您可以使用:
jquery来识别您使用$(this)点击的对象。看看phil haack的这篇文章 在文章的末尾,它讨论了循环控件和使用数组索引等等 下面是从那里获得的基本语法,并根据您的senario进行了调整
<% for (int i = 0; i < Model.OrderDetails.count; i++) { %>
<%: Html.LabelForm(m => Model.OrderDetails[i].DateOfBirth) %>
<%: Html.TextBoxFor(m => Model.OrderDetails[i].DateOfBirth) %>
<% } %>
Model.OrderDetails[i].出生日期)%>
Model.OrderDetails[i].出生日期)%>
为了使模型绑定器能够正确地处理这个问题,它必须具有顺序索引。但除此之外,这应该是可行的。这似乎不起作用,它显示了这个,它有不同的for和id:DateOfBirth hmmmmm,是的,这不太正确,我想id不可能有[]。您尝试过使用编辑器模板吗?标签不知道id指向什么,因为名称不同。
<% for (int i = 0; i < Model.OrderDetails.count; i++) { %>
<%: Html.LabelForm(m => Model.OrderDetails[i].DateOfBirth) %>
<%: Html.TextBoxFor(m => Model.OrderDetails[i].DateOfBirth) %>
<% } %>