Label или @html.Label ASP.net MVC 4
Новичок для ASP.net MVC 4 и пытается понять Razor. Если бы я хотел просто отобразить текст на моей странице .cshtml, могу ли я использовать
<label class="LabelCSSTop">Introduction</label>
или я должен использовать:
@Html.Label("STW", htmlAttributes: new { @class = "LabelCSSTop" })
Не уверен, что один из них предпочтительнее другого или если все в порядке. Если последний в любом случае испускает метку метки, я должен просто придерживаться первого?
Опять же, если я просто хочу отобразить текстовое поле, могу ли я просто сделать это:
<input id="txtName" type="text" />
или я должен сделать это:
@Html.TextBox("txtName", "")
Есть ли ситуация, когда я должен использовать @Html над обычным тегом html?
Спасибо заранее!
Ответы
Ответ 1
В случае вашего фрагмента ярлыка это не имеет большого значения. Я бы пошел на более простой синтаксис (простой HTML).
Большинство вспомогательных методов также не позволяют окружать другой элемент. Это может быть связано с выбором использования/не использования.
Сильно-типизированные эквиваленты
Однако стоит отметить, что вы используете методы @Html.[Element]For<T>()
, которые вы получаете важные функции. Обратите внимание на "For" в конце имени метода.
Пример:
@Html.TextBoxFor( o => o.FirstName )
Это будет обрабатывать создание ID/Name на основе иерархии объектов (что имеет решающее значение для привязки к модели). Он также добавит ненавязчивые атрибуты проверки. Эти методы принимают выражение как аргумент, который ссылается на свойство внутри модели. Метаданные этого свойства получают с помощью MVC-структуры, и поэтому он "знает" больше об этом свойстве, чем его сопоставление с аргументами строки.
Это также позволяет вам работать с кодом пользовательского интерфейса строго типизированным способом. Visual Studio выделит синтаксические ошибки, в то время как она не может сделать это с помощью строки. Представления также могут быть скомпилированы вместе с решением, что позволяет проводить дополнительные проверки времени компиляции.
Другие соображения
Иногда хелперный метод HTML также выполняет дополнительные задачи, которые могут быть полезны, например Html.Checkbox
и Html.CheckboxFor
, которые также создают скрытое поле, которое можно использовать вместе с этим флажком. Другим примером являются связанные с URL методы (например, для гиперссылки), которые осведомлены о маршрутах.
<!-- bad -->
<a href="/foo/bar/123">my link</a>
<!-- good -->
@Html.ActionLink( "my link", "foo", "bar", new{ id=123 } )
<!-- also fine (perhaps you want to wrap something with the anchor) -->
<a href="@Url.Action( "foo", "bar", new{ id=123 } )"><span>my link</span></a>
Существует небольшое преимущество в производительности для использования простого кода HTML и кода, который должен выполняться всякий раз, когда визуализируется представление, хотя это должно быть не. Решающим фактором.
Ответ 2
Зависит от того, что вы делаете.
Если у вас есть SPA (одностраничное приложение), вы можете использовать:
<input id="txtName" type="text" />
В противном случае рекомендуется использовать Html-помощники, чтобы ваши элементы управления были связаны с вашей моделью.
Ответ 3
Если вы хотите просто отобразить текст на странице .cshtml, я не рекомендую @Html.Label, а также не использовать ярлык html. Элемент представляет подпись в пользовательском интерфейсе, и вы увидите, что в случае @Html.Label, для добавлен атрибут id, возможно, несуществующего элемента. Значение этого атрибута - это значение поля модели, в котором не-буквенно-цифровые символы заменяются символами подчеркивания.
Вы должны использовать @Html.Display или @Html.DisplayFor, возможно, завернутый в какой-либо простой диапазон строк элементов html или p.
Ответ 4
Помощники в основном помогут вам отображать ярлыки, входы форм и т.д. для строго типизированных свойств вашей модели. Используя помощники и Visual Studio Intellisense, вы можете значительно уменьшить количество опечаток, которые вы могли бы сделать при создании веб-страницы.
С учетом сказанного вы можете продолжать создавать свои элементы вручную для обоих свойств вашей модели представления или элементов, которые вы хотите отобразить, которые не являются частью вашей модели представления.
Ответ 5
Когда дело доходит до лейблов, я бы сказал вам, что вы предпочитаете. Некоторые примеры, когда это может быть полезно с HTML-хелперными тегами, например,
- При работе с гиперссылками, поскольку хелпер HTML упрощает маршрутизацию
- Когда вы привязываетесь к своей модели, используйте
@Html.LabelFor
, @Html.TextBoxFor
и т.д.
- Когда вы используете
@Html.EditorFor
, так как вы можете назначить определенное поведение och выглядит в представлении редактора
Ответ 6
@html.label и @html.textbox используются, когда вы хотите легко привязать его к своей модели... чего не может быть достигнуто путем ввода и т.д. в одной строке