У меня есть модель представления с одним дочерним объектом и различными другими свойствами.Почему Html Helper добавляет префикс к атрибутам для модели дочерних элементов вида?
На мой взгляд, я хочу отобразить форму для дочернего объекта. Используя следующий код:
@Html.HiddenFor(model => model.Item.ItemID)
производит следующий вывод:
<input id="Item_ItemID" name="Item.ItemID" type="hidden" value="234" />
Как вы можете видеть, помощник Html имеет приставку атрибуты id
и name
, в то время как я ожидал бы выход будет
<input id="ItemID" name="ItemID" type="hidden" value="234" />
Следовательно, предыдущий выход вызывает ошибку при отправке формы, поскольку элемент формы s не соответствуют свойствам дочернего объекта.
Я знаю, что могу обойти это жесткое кодирование скрытое поле
<input id="ItemID" name="ItemID" type="hidden" value="@Model.Item.ItemID" />
, какой вид побеждает разум за то, что Html помощников, или создавая частичный вид и переходящая в дочернем объекте
Я знаю, что могу передать атрибуты html методу, а также написать собственный метод расширения, но все усложняется, когда задействованы данные и jQuery, т.е. следующий код:
@Html.EditorFor(model => model.Item.Title)
@Html.ValidationMessageFor(model => model.Item.Title)
производит этот код:
<input class="text-box single-line" data-val="true" data-val-required="The Title field is required." id="Item_Title" name="Item.Title" type="text" value="Some text" />
<span class="field-validation-valid" data-valmsg-for="Item.Title" data-valmsg-replace="true"></span>
поэтому должен быть элегантный способ сохранить имена свойств в синхронизации.
Может ли кто-нибудь ответить, почему HtmlHelper добавляет префикс к атрибутам для дочернего элемента модели представления? И как вопрос о последующих действиях, есть ли какой-либо другой опрятный способ предотвращения добавления префикса?
Спасибо @Darin. Вы были правы в том, что действие контроллера ожидало ItemViewModel. Добавление атрибута Bind позволило решить мою первоначальную проблему, не прибегая к каким-либо из моих обходных решений. – Webbie4