Каковы преимущества использования HTML-помощников MVC, таких как ActionLink, BeginForm, TextBox и т. Д., Вместо собственных тегов HTML? - PullRequest
6 голосов
/ 02 февраля 2012

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

Как это:

@Html.ActionLink(linkText: "MyLink", actionName: "MyAction", controllerName: "MyController", new { id = @myId }, new { area = "SomeArea"})

лучше, чем это:

<a href='/SomeArea/MyController/MyAction/myId'>MyLink</a>

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Ваши наблюдения верны только в том случае, если (а) вы строго используете формат маршрутизации по умолчанию и (б) если ваше приложение всегда будет установлено в корне сайта.Если вы не выполняете первое (скажем, создаете краткий маршрут / справку, которая идет к контроллеру «Домой» и действию «Справка», а затем меняете его, вводя контроллер справки с дополнительными действиями, то вам необходимо обновить все своижестко закодированные якорные теги. Лучшей альтернативой является использование помощника RouteLink с именем маршрута и, при необходимости, другими параметрами.

Что касается последнего, я обычно использую один сервер для большинства моих промежуточных развертываний иприложение НЕ находится в корне сайта, а скорее в подкаталоге. Развертывание производственного процесса является смешанным, но многие приложения устанавливаются в корне сайта. Использование помощников позволяет мне игнорировать разницу во время разработки, поскольку помощник правильно создает относительный URL-адресна текущий сайт во всех случаях. Это настолько полезно, что я даже использую его для сценариев, файлов CSS, изображений и т. д. через UrlHelper, чтобы убедиться, что любые пути, указанные для них, не прерываются между подготовкой и производством.

0 голосов
/ 28 мая 2014

Похоже, что использовать помощника будет мало пользы, если вы сделаете одно изменение - добавьте тильду, чтобы маршрутизатор автоматически разрешил адрес в правильном месте.

<a href='~/SomeArea/MyController/MyAction/myId'>MyLink</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...