Привязка модели MVC .NET к массиву на лету - PullRequest
6 голосов
/ 31 марта 2011

В блоге Scotts post он описывает, как разместить массив объектов на контроллере.

My Question , как лучше сгенерировать View для этого, который позволяетпользователю добавить еще элементы массива на лету?

Если я напишу

 foreach(MyModel item in Model)
 {
     <p>@Html.TextBoxFor(m => item.Name)</p>
 }

и контроллер добавит новый элемент в массив каждый раз, когда он генерирует <input type="text" name="item.Name" />, пропуская 1 Индекс массива.

Если я передаю код <input>, то он работает, но я теряю все атрибуты проверки на стороне клиента, такие как data-val-required="Name is required"

Кем я хочу бытьможет ли пользователь добавить новые элементы в массив на лету и при этом сохранить ненавязчивую проверку?Какова лучшая практика для этого?

Я думаю, что написал сам, используя jQuery, но если да, могу ли я сохранить проверку?

Обновление Похоже, ответ Tassadaque - хорошее решение .NET, но выглядиткак много кода на стороне сервера, чтобы сделать что-то, что должно быть очень легко.Мухаммед Адель Захи в порядке, но пропускает проверку на стороне клиента.

Я думаю, что в конечном итоге я просто напишу свой собственный HTML-код на стороне клиента вручную и с помощью плагина jQuery live и проверки.Таким образом, я могу выполнить всю свою собственную проверку и добавление и удаление новых элементов на стороне клиента без каких-либо обращений к серверу.

Ответы [ 2 ]

4 голосов
/ 31 марта 2011

Вы можете увидеть Это В этом сообщении Стив Проверено список переменной длины, в который можно динамически добавлять или удалять текстовые поля

1 голос
/ 31 марта 2011

при рендеринге и привязке к спискам или массивам, я обычно предпочитаю цикл по циклу foreach, потому что он будет генерировать необходимые индексы для привязки модели для привязки данных к модели.

for(int i=0;i<Model.Count(); i++)
{
   <%:Html.TextBox("Items["+i+"].Name", Model[i].Name)%>
}

Меня не устраивают строго типизированные помощники, когда речь идет о привязке к списку, но это просто вопрос личных предпочтений. Однако, если вы разрешаете пользователю динамически добавлять и удалять элементы со страницы через javascript, вы должны позаботиться об индексах самостоятельно.

РЕДАКТИРОВАТЬ: у меня есть в блоге о создании главной формы детализации в asp.net mvc с использованием шаблонов jquery, что также актуально в сценарии привязки списка

...