У меня есть страница редактирования, где несколько полей условно отключены в зависимости от роли пользователя.Когда поля отключены, их значения не публикуются на сервере (как и ожидалось), что приводит к тому, что ModelState является недействительным, поскольку значения являются обязательными.
Чтобы обойти это, я хочу добавить HTML.HiddenFor () для полей;чтобы значение по-прежнему публиковалось (и чтобы оно сохраняло эти значения в случае возврата представления).Однако, в случае, если эти поля не отключены, я получу и TextBoxFor, и HiddenFor, переходящие к одному и тому же свойству модели.
Я провел пару тестов, и кажется, что когда это происходит,значение первого элемента формы будет привязано к модели, а следующий элемент просто игнорируется.Если это так, то я смогу просто поставить HiddenFor после TextBoxFor, и в этом случае значение скрытого ввода будет опубликовано только тогда, когда обычный ввод отключен.
@Html.TextBoxFor(m => m.FirstName)
@Html.HiddenFor(m => m.FirstName) @*Only gets binded to the model if the above text box is disabled*@
(Существует некоторый JavaScript, который условно отключил видимое TextBox).
Итак, два вопроса: 1) задокументировано ли, что привязка MVC всегда будет работать таким образом;могу ли я безопасно иметь оба этих поля?
И, 2) Есть ли лучший подход для достижения этой цели?Я знаю, что могу использовать HiddenFor внутри оператора @If, чтобы он создавался только в том случае, если TextBox отключен;но в View это много лишней логики, которую я бы хотел избежать.