Я не использовал "привязку модели" в моем приложении MVC - то есть, я не попробовал вещь "отображающихся" исходных данных формы к одному или нескольким классам в списке параметров Действия, таким образом который описан во многих местах. Вместо этого я просто отправляю по параметрам для каждого отдельного поля формы или использую FormCollection.
Я думал, что хотел бы пробовать это, но я смущен основной предпосылкой. Кажется, что идея состоит в том, что Вы используете ту же модель для своей "привязки" (идущий с Представления на Контроллер), что Вы используете для своего ViewModel (идущий от Контроллера до Представления). (Я использую представления со строгим контролем типов с отдельным ViewModel для каждого Представления.)
Все же я нахожу, что потребности моего Представления очень отличаются от потребностей моего Действия - Представление, например, возможно, нуждается в нескольких SelectLists, из которых может выбрать пользователь. Действие, однако, только должно знать, какие объекты пользователь выбрал, не все опции в каждом списке.
Это действительно обычно для использования того же класса, входящего в оба направления?
Например, вот один из моих классов ViewModel:
public class IntervieweeSelectLists
{
public SelectList intervieweesList { get; set; }
public ClientSelectLists districtFilterLists { get; set; }
public SchoolDisplayListInfo schoolListDisplay { get; set; }
public long selectedIntervieweeID { get; set; }
public string selectedIntervieweeName { get; set; }
public string selectedSiteID { get; set; }
public bool needsInterviewList { get; set; }
public bool needsClientSelectLists { get; set; }
}
(Плюс существуют некоторые методы, и т.д.),
Этот класс необходим Представлению, но не все это необходим Действию - т.е. intervieweesList, districtFilterLists, needsInterviewList, и т.д.
Я предполагаю, что мой вопрос: если бы я должен был записать пользовательский образцовый редактор связей для привязки этого класса, то я должен был бы воссоздать целый класс в образцовом редакторе связей, включая SelectLists, содержание которого прибывает из базы данных, когда все мне действительно нужны действительно ли вещи, пользователь, выбрал? Или я установил бы все значения от существующего экземпляра этого класса, представленного к образцовому редактору связей от Представления?
Извините, если это является несвязным..., что-то отсутствует в моем понимании здесь.На помощь!:)
Я бы воссоздал только те свойства, которые имеют смысл в подшивке модели. Необходимость заполнения SelectListItems из БД является огромными накладными расходами, если значение свойства не будет использоваться (как обычно бывает) в вашем действии, если не возникнет какая-либо ошибка на стороне сервера, и в этом случае вам нужно будет воссоздать всю ViewModel для повторного -отобразить вид.
Подшивка пользовательской модели не требуется. Когда ваш IntervieweeSelectLists
возвращается в действии контроллера, ваши списки будут пустыми, поскольку данные, переданные обратно из сообщения, не будут содержать эту информацию. Итак, у вас есть объект, который имеет нужные вам ответы с пустыми списками. Теперь допустим, что что-то не подтверждается, и вам нужно снова отобразить все списки. Что ж, действия контроллера знают, когда эта модель будет отображаться, поэтому списки нужно только заполнить, прежде чем модель будет передана в представление. Если вам не нужно передавать модель в представление, а просто сохранять результаты, так как нет необходимости заполнять списки.