#c# #asp.net-mvc #asp.net-mvc-3 #model
#c# #asp.net-mvc #asp.net-mvc-3 #Модель
Вопрос:
Итак, у меня есть метод действия, подобный этому:
public ViewResult CareerSearch()
{
CareerSearchModel model = GetCareerSearchModel();
return View("Search", model);
}
В представлении я вручную создаю список флажков из одного из свойств модели. Результат этого в конечном итоге выглядит примерно так:
<input id="location51438342" type="checkbox" checked="True" value="2" name="locations">
<label for="location51438342">Austin</label>
<input id="location14609737" type="checkbox" checked="True" value="9" name="locations">
<label for="location14609737">Dallas</label>
<input id="location25198218" type="checkbox" checked="True" value="11" name="locations">
<label for="location25198218">Houston</label>
Итак, в методе action, который обрабатывает запись формы, я хочу получить ссылку на модель И целочисленный массив checkbox. Однако, когда я выполняю следующий метод действия, значение «model» равно нулю:
[HttpPost]
public ViewResult CareerSearch(CareerSearchModel model, int[] locations)
{
//omitted for brevity
}
Чего мне здесь не хватает? Как мне получить ссылку на мою модель И массив значений флажков?
Комментарии:
1. Есть ли у модели свойство под названием «locations», которое вы пытаетесь привязать? Или вы имеете в виду другие свойства, которые вы не показываете в примере?
Ответ №1:
вам также пришлось бы отправлять обратно все поля самой модели, чтобы они были в метках hiddenfor внутри формы. вы можете использовать firebug, чтобы посмотреть, что отправлено обратно. если она не отправляется обратно, вам придется воссоздать ее в своем действии после публикации.
Ответ №2:
Модель нигде не сохраняется на сервере и автоматически не публикуется обратно в данных публикации (используйте Fiddler для подтверждения). Вы должны создать экземпляр модели таким же образом, как вы делаете в действии GET, и использовать другие параметры, чтобы соответствующим образом ее изменить.
Смотрите в NerdDinner о том, как отобразить данные формы POST в вашей модели.