Basta ya de indagar por todo internet ya que has llegado al espacio indicado, contamos con la respuesta que quieres encontrar pero sin complicaciones.
Solución:
Sí, hay una diferencia. Html.ActionLink
genera un etiqueta mientras que
Url.Action
devuelve solo una url.
Por ejemplo:
@Html.ActionLink("link text", "someaction", "somecontroller", new id = "123" , null)
genera:
link text
y Url.Action("someaction", "somecontroller", new id = "123" )
genera:
/somecontroller/someaction/123
También hay Html.Action que ejecuta una acción de controlador secundario.
Html.ActionLink
genera un etiqueta automáticamente.
Url.Action
genera solo una url.
Por ejemplo:
@Html.ActionLink("link text", "actionName", "controllerName", new id = "" , null)
genera:
">link text
y
@Url.Action("actionName", "controllerName", new id = "" )
genera:
/controllerName/actionName/
El mejor punto a favor que me gusta es usar Url.Action(...)
Está creando una etiqueta de anclaje por su cuenta donde puede configurar su propio texto vinculado fácilmente incluso con alguna otra etiqueta 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)
En el ejemplo anterior, puede ver que si necesito específicamente un botón para realizar alguna acción, debo hacerlo con @Url.Action, mientras que si solo quiero un enlace, usaré @Html.ActionLink. El punto es cuando tienes que usar algún elemento (HTML) con la URL de acción.