разница в типе ввода = Checkbox, @HTML.CheckBox и @HTML.CheckBoxFor?

Я новичок в MVC и не понимаю, в чем разница между <Input type="Checkbox">, @HTML.CheckBox и @HTML.CheckBoxFor.

Не могли бы вы объяснить, почему два помощника предназначены для одного и того же? В какой ситуации какой из них следует использовать?

Спасибо

Изменить: добавлен ввод type=checkbox


person Toubi    schedule 03.01.2014    source источник
comment
CheckBoxFor принимает объект в качестве аргумента и создает флажок, связанный с данными этого объекта.   -  person Claies    schedule 03.01.2014


Ответы (2)


<Input type="Checkbox"> — это HTML-разметка для флажка, а @Html.CheckBox и @HTML.CheckBoxFor — HTML-помощники для механизма представления Razor.

предположим, что ваша модель просмотра имеет свойство Person.HadDinner, тогда обычно для правильной работы привязки модели вам нужно будет указать флажок Person.HadDinner и идентификатор как Person_HadDinner..

вы можете использовать @Html.CheckBox как

@HTML.CheckBox("Person.HadDinner", Model.Person.HadDinner)

но если вы используете @HTML.CheckBoxFor, это будет строго типизировано..

@HTML.CheckBoxFor(x => x.Person.HadDinner)

в обоих случаях окончательная выходная разметка будет

<input type="checkbox" id="Person_HadDinner" name="Person.HadDinner">
person dotNETbeginner    schedule 03.01.2014

Флажок для (MSDN)

Возвращает элемент ввода флажка для каждого свойства в объекте, представленном выражением.

Это означает, что элемент флажка создается для каждого свойства в представленном выражении. Где как флажок (MSDN)

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

Это создает простой элемент Checkbox с предоставленными (необязательными) атрибутами.

Обычно при ссылке на свойство объекта (или модели представления) наиболее желательным методом является использование CheckboxFor, поскольку флажок будет правильно отформатирован в соответствии с вашей моделью.

Надеюсь это поможет.

EDIT: ответ на изменения OP.

И CheckboxFor, и Checkbox генерируют стандартный вывод HTML, как показано ниже.

@Html.CheckboxFor(m => m.SomeProperty)

<input type="checkbox" name="SomeProperty" id="SomeProperty" />

@Html.Checkbox("SomeProperty")

<input type="checkbox" name="SomeProperty" id="SomeProperty" />

Вспомогательные методы просто генерируют HTML-код, необходимый для соответствия выражениям и атрибутам, определенным во вспомогательных методах.

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

person Nico    schedule 03.01.2014
comment
Спасибо. Не могли бы вы увидеть мое редактирование и рассказать о типе ввода = флажок? Спасибо - person Toubi; 03.01.2014