У меня есть новое приложение MVC 4 с довольно простым View / Controller. Связанная Модель содержит пару свойств, которые я сопоставил с Скрытыми полями формы. Когда страница отображается в первый раз (, например, с помощью HttpGet Action ), все выглядит нормально. Но когда форма отправляется после нажатия кнопки «Отправить», полученная модель, представленная в действии, больше не имеет значений скрытого поля. Вот краткое изложение подробностей.
Вот образец модели :
public class Application
{
public bool ShowSideBars { get; set; }
}
Вот начальный Контроллер * Действие * (, которое, кажется, работает нормально ):
[HttpGet]
public ActionResult Application()
{
var model = Request.ParseFromQueryString<Application>();
model.ShowSideBars = true;
return View(model);
}
Это сопоставляется с View следующим образом:
<fieldset>
@Html.HiddenFor(m => m.ShowSideBars)
...
</fieldset>
В результате получается следующая разметка внутри набора полей:
<input data-val="true" data-val-required="The ShowSideBars field is required." id="ShowSideBars" name="ShowSideBars" type="hidden" value="True" />
Примечание : Мне бы очень хотелось, чтобы я знал, почему MVC решил добавить контент «... поле обязательно для заполнения», когда я не пометил его как необходимый, но это для другого вопроса
Вот действие , которое вызывается при отправке формы. В этот момент вышеупомянутое свойство больше не будет иметь значение true .
[HttpPost]
public ActionResult Application(Application application)
{
// Other work done here
return View(application);
}
В настоящее время нет пользовательских моделей Binder. Кроме того, я протестировал некоторые другие типы данных, и я вижу то же самое.
Может кто-нибудь объяснить, почему скрытые значения формы не возвращаются? Я просто делаю все это неправильно?