2010-09-21 21 views
29

Una tarea simple en MVC, a veces se convierte en un desafío difícil.ASP.NET MVC ActionLink fuera del área

Bueno, tengo un área llamada Admin. Tengo una página llamada "Prohibida" dentro del directorio de Shared en esta área.

El objetivo es simple: necesito crear un Html.ActionLink que genere un enlace para regresar a la página de inicio que es EXTERIOR del área de administración.

así que trato, <%= Html.ActionLink("Back","Index",new {controller="Home"})%>, y su generan:

http://localhost/Admin/Home/Index 

Su mal Quiero:

http://localhost/Home/Index 

¿Cómo puedo crear un enlace desde un área a la estructura controladores por defecto?

Respuesta

51

Prueba esto:

<%= Html.ActionLink("Back", "Index", "Home", new { area = "" }, null) %> 

Al utilizar zonas, siempre se debe especificar el área de su llaman en sus ActionLinks agregando un valor de ruta que el anterior, si el enlace está fuera del área (como en su caso), solo usa un parámetro vacío para el área.


Hay una buena extensión que me parece esencial en cualquier proyecto de ASP.NET MVC (T4MVC). Hace que tus ActionLinks se vean mucho más limpios y los protege contra errores.

Así que el código anterior se verá algo como esto:

<%= Html.ActionLink("Back", MVC.Home.Index()) %> 

y cuando se utiliza un área:

<%= Html.ActionLink("Some Link", MVC.Admin.SomeController.SomeAction()) %> 

Es una parte del proyecto MvcContrib en CodePlex here

Deberías considerar usarlo.

+0

Intenté complicarme y agregar esto a mi ruta predeterminada de Registro de Área, pero no funcionó. El manual directo a area = "" funciona en un enlace de acción regular. Gracias. – kmehta

+1

Y para Forma, así es como lo harías. 'Html.BeginForm (" LogOff "," Cuenta ", nuevo {area =" "}, FormMethod.Post, new {id =" logoutForm "}))' –

Cuestiones relacionadas