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 используются, когда вы хотите легко привязать его к своей модели... чего не может быть достигнуто путем ввода и т.д. в одной строке