Asp.net mvc 如何在ASP.NET MVC中将嵌套数组元素属性值绑定到文本框

Asp.net mvc 如何在ASP.NET MVC中将嵌套数组元素属性值绑定到文本框,asp.net-mvc,data-binding,binding,Asp.net Mvc,Data Binding,Binding,我有一个模型 public class User { public User() { Addreses = new List<Address>(); } public String Name { get; set; } public String LastName { get; set; } public List<Address> Addresses { get; private set; } } pub

我有一个模型

public class User 
{
    public User()
    {
       Addreses = new List<Address>();
    }
    public String Name { get; set; }
    public String LastName { get; set; }
    public List<Address> Addresses { get; private set; }
}

public class Address
{
    public String Street { get; set; }
    public String City { get; set; }
}
公共类用户
{
公共用户()
{
Addreses=新列表();
}
公共字符串名称{get;set;}
公共字符串LastName{get;set;}
公共列表地址{get;private set;}
}
公共课堂演讲
{
公共字符串Street{get;set;}
公共字符串City{get;set;}
}
我想把用户地址显示为ul列表。我在查看页面中执行此操作

    using (Html.BeginForm("UpdateUser", "Home", FormMethod.Post))
    {
%>
<% =Html.TextBox("user.Name")%><br />
<% =Html.TextBox("user.LastName")%><br />
<ul>
    <% 
       for (Int32 index = 0; index < ((User)ViewData["user"]).Addresses.Count; index++)
       {%>
    <li>
        <% =Html.TextBox("user.Addresses[" + index + "].Street")%>,
        <% =Html.TextBox("user.Addresses[" + index + "].PostalCode")%>,
        <% =Html.TextBox("user.Addresses[" + index + "].City")%>
    </li>
    <% 
       }
    %>
</ul>
<input type="submit" value="Submit" />
<% }%>
使用(Html.BeginForm(“UpdateUser”、“Home”、FormMethod.Post))
{
%>


  • , ,
for语句中填充的文本框中的数据为空。当然,我可以添加下一个参数TextBox方法来赋值,但上面的两个文本框(例如“user.Name”)正确读取/设置值

我做错了什么


另外,我使用的是MVC RTM 1.0,在您的示例中,您只是将texbox的“name”和“id”属性设置为第二个重载,而不是将value对象设置为第二个重载

试试这个:

<% =Html.TextBox("user.Addresses[" + index + "].Street", user.Addresses[index].Street)%>        

Html.TextBox方法需要控件名和控件值

<ul>
    <%foreach (var address in ((User)ViewData["user"]).Addresses){ 
        <li>
            <% =Html.TextBox("Street", address.Street)%>,
            <% =Html.TextBox("PostalCode", address.PostalCode)%>,
            <% =Html.TextBox("City", address.City)%>
        </li>
    <%}%>
</ul>

    是的,但正确读取了ViewData中的值。我不知道为什么对列表执行相同操作需要手动设置值。鉴于SO社区机器人已将其推到顶部,您能否确认这是否仍然是一个问题?