Помогли ли 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, также хорошо.