2009-03-25 5 views
3

У меня модельКак привязать вложенный элемент массива значение свойства для TextBox в ASP.NET MVC

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

И я хочу сделать адреса пользователей, отображение в виде списка уль. Я делаю это в поле зрения страницы

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" /> 
<% }%> 

И данные в текстовых записях, заполненных для утверждения, пустые. Конечно, я могу добавить следующий метод TextBox для назначения значения, но два текстовых поля вверх (например, «user.Name») правильно читают/устанавливают значение.

Что я делаю неправильно?

PS. Я использую MVC RTM 1.0

+0

Учитывая, что бот сообщества SO подтолкнул его к вершине, можете ли вы подтвердить, действительно ли это проблема? –

ответ

0

В вашем примере вы устанавливаете атрибуты texbox «name» и «id», а не объект value как вторую перегрузку.

попробовать это:

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

Да, но <% = Html.TextBox ("user.Name")%> правильно прочитало значение из ViewData. И я не знаю, зачем делать то же самое со списками, чтобы вручную установить значение. – zielu1

1

Метод 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> 

вы также можете попробовать использовать метод Html.TextBoxFor в Проект MVC Futures

 Смежные вопросы

  • Нет связанных вопросов^_^