2010-09-21 18 views
29

Proste zadanie w MVC, czasem staje się trudnym wyzwaniem.ASP.NET MVC ActionLink poza obszarem

Cóż, mam obszar o nazwie Administrator. Mam stronę o nazwie "Forbidden" w katalogu Shared w tym obszarze.

Cel jest prosty: muszę utworzyć plik Html.ActionLink, który generuje link do strony głównej, która jest w obszarze administracyjnym.

więc staram, <%= Html.ActionLink("Back","Index",new {controller="Home"})%> i jej generowanie:

http://localhost/Admin/Home/Index 

Jego źle chcę!

http://localhost/Home/Index 

Jak mogę utworzyć link z obszaru struktury sterowników domyślne?

Odpowiedz

51

Spróbuj tego:

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

Podczas korzystania obszarach należy zawsze określić Twoje dzwonisz w swoim ActionLinks przez dodanie wartości trasach jak powyżej, Jeśli link znajduje się poza obszarem (jak w przypadku), po prostu użyj pustego parametru dla obszaru.


Jest ładny przedłużenie że znajdę niezbędne w każdym projekcie ASP.NET MVC (T4MVC). To sprawia, że ​​twoje ActionLinks wygląda znacznie czystsze i chroni je przed błędami.

więc powyższy kod będzie wyglądać następująco:

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

i podczas korzystania z obszaru:

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

Jest to część projektu MvcContrib na codeplex here

Powinieneś rozważyć użycie go.

+0

Próbowałem uzyskać podstępne i dodać to do mojej domyślnej trasy AreaRegistration, ale to nie zadziałało. Instrukcja bezpośrednio do area = "" działa w zwykłym łączu akcji. Dzięki. – kmehta

+1

A dla Form jest to, jak byś to zrobił. 'Html.BeginForm (" LogOff "," Konto ", nowy {area =" "}, FormMethod.Post, nowy {id =" logoutForm "}))' –

Powiązane problemy