Привязка динамического списка ASP.NET MVC

У меня есть строго типизированная страница mvc, которую я обычно не привязываю к списку объектов. Таким образом, в представлении mvc это может выглядеть примерно так

<% foreach (var item in Model.WhatYouDoL) { %>
<li><%: Html.Encode(item.Text) %><input type="hidden" name="WhatYouDoL[0].Reference" /></li>
<% } %>

Моя модель представления может выглядеть примерно так

public class ViewModelQuoteWhatYouDoInMotorTrade
    {
        public List<WhatYouDo> WhatYouDoL { get; set; }
    }

и мой список содержит объект вроде

public struct WhatYouDo
    {

        public decimal Percent { get; set; }
        public string Reference { get; set; }
        public string Text { get; set; }
    }

Это связывает нормально, если я использую WhatYouDoL [0] .Reference с индексом ([0]), который при загрузке я могу установить с помощью индекса. Проблема в том, что я хочу добавлять и удалять из этого списка на стороне клиента. Так что у меня может быть несколько js, которые добавляют дополнительный элемент списка и удаляют текущий. Это означает, что мне нужно каким-то образом управлять индексами в имени и поддерживать их в порядке и не дублировать на стороне клиента. Кто-нибудь знает, есть ли способ обойти использование индекса в имени.

Заранее спасибо.


person peter pan    schedule 02.12.2010    source источник
comment
Хотите обновить список с помощью Ajax? Или что. Пожалуйста, предоставьте дополнительную информацию.   -  person The Smallest    schedule 03.12.2010


Ответы (1)


Это, наверное, ошибка:

<% foreach (var item in Model.WhatYouDoL) { %>
<li><%: Html.Encode(item.Text) %><input type="hidden" name="WhatYouDoL[0].Reference" /></li>
<% } %>

Может быть, это должно быть:

<% foreach (var item in Model.WhatYouDoL) { %>
<li><%: item.Text %><input type="hidden" name="<%: item.Reference %>" /></li>
<% } %>

Вам не нужно кодировать, пока вы используете <: доказательство

person The Smallest    schedule 02.12.2010
comment
не забывайте двоеточие в ‹% item.Reference%›, я думаю, оно должно быть ‹%: item.Reference%› - person zam6ak; 02.12.2010
comment
Привет, спасибо, что нашли время ответить. Возможно, я неправильно сформулировал свой вопрос. Проблема заключается в использовании этого соглашения об именах name = WhatYouDoL [0] .Reference. Я хочу добавить и удалить список на стороне клиента, но это означает, что мне нужно убедиться, что в конце все индексы [0] верны в коллекции. Я надеялся, что смогу сделать name = WhatYouDoL.Reference, и mvc сработает, что это коллекция. Еще раз спасибо. - person peter pan; 03.12.2010
comment
Думаю, это может сработать. Но я еще не пробовал. Часть непоследовательных индексов. haacked.com/archive/2008/10/ 23 / model-binding-to-a-list.aspx - person peter pan; 03.12.2010
comment
Думаю, это может сработать. haacked.com/archive/2008/10/ 23 / model-binding-to-a-list.aspx - person peter pan; 03.12.2010