asp.net-mvc-2 - Html.LabelFor 在循环内

标签 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 循环,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/

相关文章:

asp.net - MVC2 和 MVC Futures 导致 RedirectToAction 问题

database - ASP.NET MVC 2 - 通过在 View 中提交来简单增加数据库中的值

jquery - $.ajax 的成功回调无法正常工作

c# - ASP.NET MVC 对象引用未设置为对象的实例

asp.net-mvc-2 - 在自定义模型绑定(bind)器中设置 ModelState 值

javascript - 有人愤怒地使用 Knockoutjs 和 asp.net-mvc 吗?

asp.net-mvc - 即使禁用验证,ASP.NET 请求验证也会出现异常

asp.net-mvc - 数据类型客户端验证在 MVC 2 中不起作用

jquery - 响应内容类型与预期不同

asp.net-mvc - ASP.NET MVC - 使用 Moq 框架对 RenderPartialViewToString() 进行单元测试?