2010-09-21 22 views
29

Un'attività semplice in MVC, a volte diventa una sfida difficile.ASP.NET MVC ActionLink area esterna

Bene, ho un'area chiamata Admin. Ho una pagina denominata "Proibita" all'interno della directory condivisa in quest'area.

L'obiettivo è semplice: ho bisogno di creare un Html.ActionLink che genera un collegamento per tornare alla pagina iniziale che è ESTERNO l'area di amministrazione.

così cerco, <%= Html.ActionLink("Back","Index",new {controller="Home"})%>, e la sua generano:

http://localhost/Admin/Home/Index 

suo sbagliato che voglio:!

http://localhost/Home/Index 

Come si crea un collegamento da una zona per la struttura controller di default?

risposta

51

Prova questo:

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

Quando si utilizza Aree, si dovrebbe sempre specificare l'area tuo chiamano nei tuoi ActionLinks con l'aggiunta di un valore di percorso come sopra, se il collegamento è al di fuori dell'area (come nel tuo caso), basta usare un parametro vuoto per l'area.


C'è una bella estensione che trovo essenziale in ogni progetto ASP.NET MVC (T4MVC). Rende i tuoi ActionLink molto più puliti e li protegge dagli errori.

Così il codice di cui sopra sarà simile a questo:

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

e quando si utilizza una superficie:

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

E 'una parte del progetto MvcContrib su CodePlex here

Dovresti considerare di usarlo.

+0

Ho provato a diventare complicato e aggiungerlo al percorso predefinito AreaRegistration, ma non ha funzionato. Il manuale direct to area = "" funziona in un normale link di azione. Grazie. – kmehta

+1

E per Form questo è come lo faresti. 'Html.BeginForm (" LogOff "," Account ", new {area =" "}, FormMethod.Post, new {id =" logoutForm "}))' –

Problemi correlati