Лучшая практика, чтобы получить список объектов из вида в asp.net mvc - PullRequest
2 голосов
/ 24 ноября 2011

У меня есть один класс, такой как

public class Questions
{
    public long ID { get; set; }
    public string questionText { get; set; }
    public int questionType { get; set; }
}

Теперь, когда в представлении создаются и отправляются различные вопросы, каким должен быть код действия контроллера и как мне спроектировать свое представление, чтобы получить списоквопросов со всеми свойствами, установленными напрямую?

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

1 Ответ

2 голосов
/ 24 ноября 2011

Привязка модели к IList<T>

Я писал о привязке модели к IList<T>.Я думаю, что это именно та проблема, которую вы пытаетесь решить.И есть еще несколько постов в моем блоге, которые могут вам очень помочь, особенно потому, что вы не сказали, есть ли у вас HTML-форма вопросов или Javascript-объекты, построенные из какой-то общей формы вопроса.Тем не мение.Эти два сообщения помогут вам решить обе проблемы:

Понимая привязку модели MVC Asp.net, вы сможете легко привязать свои данные (формы или объекты) на стороне клиента к:

public ActionResult AddQuestions(IList<Question> questions)
{
    // process questions
}

Предположим, что вы отправляете обратно форму HTML

Основное требование - правильно индексировать имена полей HTML, поскольку они отправляются обратно на сервер.В вашем случае ваши поля должны быть:

<input type="text" value="questions[0].questionText" />
<select name="question[0].questionType">
    <!-- options -->
</select>

Когда вы динамически добавляете новые пары (для формирования новых вопросов), вы должны убедиться:

  1. индексирование элементов начинается с 0 и
  2. в индексах нет пробелов.

Если вы также предоставите возможность удалять определенные вопросы (при их добавлении / редактировании), вам придется переиндексировать элементы при каждом удалении.

Проверка модели (формы или правильно подготовленные объекты)

Самое замечательное в этом - то, что вы можете помещать атрибуты аннотаций данных в свой класс модели приложения и автоматически проверять опубликованные объекты,так что вам не нужно делать это самостоятельно.

...