Скрытые поля формы не отображаются в модели MVC после обратной передачи

У меня есть новое приложение MVC 4 с довольно простым представлением/контроллером. Связанная модель содержит пару свойств, которые я сопоставил с скрытымиполя формы. Когда страница отображается в первый раз (, например, с помощью 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);
}

В настоящее время нет пользовательских связывателей моделей. Кроме того, я протестировал некоторые другие типы данных и вижу то же самое.

Кто-нибудь может объяснить, почему скрытые значения формы не возвращаются? Я просто делаю все это неправильно?

12
задан tereško 11 February 2014 в 06:54
поделиться