2014-01-06 6 views
4

Я пытаюсь добавить несколько элементов одного и того же типа одновременно в одном представлении, предоставляя модель.Несколько Добавить в одном представлении, ASP.NET MVC

@model List<Item>

Для точки зрения, это делает, когда я отправляю обратно, модель имеет нулевое значение, даже если данные формы отправляются правильно, но по какой-то причине отображение не происходит.

+0

вам нужно пользовательские модели связующий - http://www.codeproject.com/Articles/605595/ASP-NET-MVC-Custom-Model- Binder – Typist

ответ

2

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

Измените свою петлю на это, которая будет подхвачена связующим устройством (без просмотра вашего вида или модели. Я использую Field для демонстрационных целей здесь).

@for (int i = 0; i < Model.Count; i++) 
    { 
     ..... 
     @Html.EditorFor(model => Model[i].Field) 
     ..... 
    } 

Затем они будут отправлены обратно на сервер.

Для получения дополнительной информации об этом см здесь:

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

+1

Спасибо, мне просто нужно спросить: «Если я хочу, чтобы по крайней мере один элемент в коллекции был заполнен без того, чтобы ModelState жаловался на другие обязательные поля, которые не были заполнены. –

+0

Нет проблем, я не должен был этого делать раньше. Возможно, вам придется добавить флаг в модель, чтобы указать, на какой элемент вы хотите удалить ошибки модели модели. Затем удалите его на столбе. Я бы задал еще один вопрос, так как это хороший вопрос, и у кого-то еще будет больше информации, я уверен. :) – hutchonoid

+0

Что произойдет, если я хочу вставить больше элементов, чем Model.Count? -hutchonoid –

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