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社区机器人已将其推到顶部,您能否确认这是否仍然是一个问题?