asp.net-mvc html-helper html.actionlink url.action

asp.net mvc - Cómo pasar el Área en Url.Acción?



asp.net-mvc html-helper (2)

Puede usar esta Url.Action("actionName", "controllerName", new { Area = "areaName" });

Además, no olvide agregar el espacio de nombres del controlador para evitar un conflicto entre los nombres de los controladores del área de administración y los nombres del controlador del sitio.

Algo como esto

public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_default", "Admin/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional }, new[] { "Site.Mvc.Areas.Admin.Controllers" } ); }

El problema en Html.ActionLink () es que no puede agregar contenido html adicional dentro de la etiqueta que genera. Por ejemplo, si desea agregar un ícono además del texto como:

<a href="/Admin/Users"><i class="fa fa-users"></i> Go to Users</a>

Usando Html.ActionLink (), solo puedes generar:

<a href="/Admin/Users">Go to Users</a>

Entonces, para resolver esto, puede usar Url.Action () para generar solo la URL dentro de la etiqueta como:

// Here, Url.Action could not generate the URL "/admin/users". So this doesn''t work. <a href="@Url.Action("", "Users", "Admin")"><i class="fa fa-usesr"></i> Go to Users</a> // This works, as we know it but won''t pass the Area needed. <a href="@Url.Action("", "Users")"><i class="fa fa-users"></i> Go to Users</a>

Entonces, ¿cómo pasas el Área usando Url.Action ()?

¡Muchas gracias por adelantado!


@Url.Action("{action}", "{controller}", new { Area = "areaname" }); @Html.ActionLink("LinkName", "{action}", "{controller}", new { area = "{areaname}" }, new { @class = "btn btn-cool" })

escriba el nombre del área como atributo html con el objeto anonymus. puede usar el método de extensión actionlink html helper para lograr lo mismo.