Помогли ли ASP.NET MVC HTML?

Вполне возможно, что я, возможно, не понял, но я действительно не могу понять, как помощники HTML ASP.NET MVC могут мне помочь. Здесь образец: -

HTML:

<a href="ActionName" target="_blank">Click Me</a>

HTML-помощник:

<%= Html.ActionLink("Click me", "ActionName", null, new {target="blank"}) %>

Мои глаза читают HTML более легко, и кажется, что интуитивно понятно использовать HTML-помощники.

Посмотрите на следующие аргументы:

  • Многие люди (даже новички) умеют читать HTML. Синтаксис HTML Helper может легко запутать.
  • Во многих случаях вам нужно сделать больше ввода написание HTML-помощника, тогда вам нужно написать фактический HTML.
  • HTML-помощник все равно вытолкнет настоящий HTML-код, поэтому почему бы не написать HTML напрямую?
  • Написание HTML дает вам больше контроля над синтаксисом и стандартами. Вы можете сделать его совместимым с любым стандартом HTML.

Есть ли какие-то особые убедительные причины, которые я не понял (поскольку я уверен в себе в MVC, и могут быть пробелы), которые должны заставить меня хотеть использовать HTML-помощники?

Или это просто шум кода?

Ответы

Ответ 1

Основная причина, по которой вы непосредственно не используете теги <a>, - это то, что вы не хотите жестко указывать URL-адреса в своем приложении. Метод Html.ActionLink абстрагирует создание URL-адресов, и вы укажете контроллер, действие и другие параметры.

Итак, в основном, две строки, которые вы разместили в своем вопросе, на самом деле не эквивалентны. Вы должны подумать о добавлении кода генерации динамического URL в тег <a>, чтобы сделать их функционально эквивалентными. Кроме того, если вы выведете HTML напрямую, вам нужно будет очень внимательно относиться к материалам кодирования HTML. Html.ActionLink будет выполнять эту работу и для вас.

Ответ 2

Скажем, что у вас много параметров запроса в URL-адресе, например

site.com?a=1&b=2&c=3&d=4&e=1&f=1

<%= Html.ActionLink("Click me", "ActionName", null, new {a=1, b=2, c=3, d=4, e=1, f=1}) %>

Actionlink может создать для вас этот URL. Если у вас не было помощника, вам придется вручную добавить ключи и vlaues в URL. И это настоящая боль. URL-адрес может также соответствовать URL-адресам.

Ответ 3

Еще лучше, используйте MvcContrib и отбросьте ошибки, связанные с "магическими строками", и замените их на lambdas.

<%= Html.ActionLink<MyController>(x => x.ActionName() ,"Click me",new {target="blank"}) %>

Ответ 4

На самом деле нет большой разницы между

<a href="ActionName" target="_blank">Click Me</a>

и

<%= Html.ActionLink("Click me", "ActionName", null, new {target="blank"}) %>

потому что в обоих случаях вы являетесь hardcoding (URL-адрес в первом, имя действия в последнем).

Вот почему я создаю специальные вспомогательные методы для ссылок, а затем я использую

<%= Html.LinkSomeAction("Click me") %>

Таким образом, я уверен, что когда я изменю свое мнение о том, какое имя должно иметь действие, со мной все будет в порядке; Кроме того, мне никогда не придется беспокоиться о неправильном использовании имен действий или ссылок.

Решение, предлагаемое mxmissile, также хорошо.