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) %>

<% } %>