【问题标题】:How to bind nested array element property value to TextBox in ASP.NET MVC如何在 ASP.NET MVC 中将嵌套数组元素属性值绑定到 TextBox
【发布时间】:2010-10-15 10:03:59
【问题描述】:

我有模特

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; }
}

我想将用户地址显示为 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" />
<% }%>

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

我做错了什么?

PS。我正在使用 MVC RTM 1.0

【问题讨论】:

  • 鉴于 SO Community bot 已将其推到顶部,您能否确认这是否仍然是一个问题?

标签: asp.net-mvc data-binding binding


【解决方案1】:

在您的示例中,您仅将 texbox 的“名称”和“id”属性设置为第二个重载,而不是值对象。

试试这个:

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

【讨论】:

  • 是的,但是 正确地从 ViewData 读取值。而且我不知道为什么对列表做同样的事情需要手动设置值。
【解决方案2】:

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>

你也可以尝试在 MVC Futures 项目中使用 Html.TextBoxFor 方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多