HTML.ActionLink vs Url.Action в ASP.NET Razor

Есть ли разница между HTML.ActionLink и Url.Action или это всего лишь два способа сделать одно и то же?

Когда я должен отдать предпочтение одному другому?

Да, есть разница. Html.ActionLink генерирует тег тогда как Url.Action возвращает только URL-адрес.

Например:

 @Html.ActionLink("link text", "someaction", "somecontroller", new { id = "123" }, null) 

генерирует:

 link text 

и Url.Action("someaction", "somecontroller", new { id = "123" }) генерирует:

 https://stackoverflow.com/somecontroller/someaction/123 

Существует также Html.Action, который выполняет действие дочернего controllerа.

Html.ActionLink генерирует тег .

Url.Action генерирует только URL-адрес.

Например:

 @Html.ActionLink("link text", "actionName", "controllerName", new { id = "" }, null) 

генерирует:

 link text 

а также

 https://stackoverflow.com/questions/7709001/html-actionlink-vs-url-action-in-asp-net-razor/@Url.Action("actionName", "controllerName", new { id = "" }) 

генерирует:

 https://stackoverflow.com/controllerName/actionName/ 

Лучшим плюсом, который мне нравится, является использование Url.Action(https://stackoverflow.com/questions/7709001/html-actionlink-vs-url-action-in-asp-net-razor/...)

Вы создаете тэг anchor своим собственным, где вы можете легко установить свой собственный связанный текст даже с помощью другого тега html.

  ;height: /> @Html.DisplayFor(model => model.)  
 

@Html.ActionLink("Create New", "Create")

@using (Html.BeginForm("Index", "Company", FormMethod.Get)) {

Find by Name: @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)

}

В приведенном выше примере вы можете видеть, что если мне нужна определенная кнопка, чтобы сделать какое-то действие, я должен сделать это с помощью @ Url.Action, тогда как если я просто хочу ссылку, я буду использовать @ Html.ActionLink. Дело в том, что вам нужно использовать некоторый элемент (HTML) с использованием URL-адреса действия.

@HTML.ActionLink генерирует HTML anchor tag . Хотя @Url.Action генерирует URL для вас. Вы можете легко понять это;

 // 1. Item Definition @HTML.ActionLink("Item Definition", "ActionMethod", "ControllerName") // 2. https://stackoverflow.com/ControllerName/ActionMethod https://stackoverflow.com/questions/7709001/html-actionlink-vs-url-action-in-asp-net-razor/@Url.Action("ActionMethod", "ControllerName") // 3. Item Definition  Item Definition 

Оба эти подхода различны, и это полностью зависит от ваших потребностей.

Вы можете легко представить Html.ActionLink в качестве кнопки, используя соответствующий стиль CSS. Например:

 @Html.ActionLink("Save", "ActionMethod", "Controller", new { @class = "btn btn-primary" }) 

Я использовал код ниже, чтобы создать кнопку, и это сработало для меня.

  
  • Добавление подкаталога в папку «View / Shared» в ASP.Net MVC и вызов представления
  • Строковая интерполяция в представлении «Бритва»?
  • Добавить файлы CSS или JavaScript в макет из представлений или частичных представлений
  • @ Html.DropDownListДля того, как установить значение по умолчанию
  • Запись / вывод HTML-строк без сохранения
  • Преобразование байт-массива в изображение и отображение в режиме просмотра бритвы
  • Как убить сеанс или идентификатор сеанса (ASP.NET/C#)
  • Как добавить class в @ Html.ActionLink?
  • Razor: @ Html.Partial () vs @RenderPage ()
  • Как визуализировать Razor View для строки в ASP.NET MVC 3?
  • Почему привязка модели не работает в моем методе POST-действия?
  • Давайте будем гением компьютера.