2013-06-06 18 views
7

miałem następujący fragment kodu, moim zdaniem Razor układ (który jest wspólny dla wszystkich widoków w moim wniosku):Czy domyślnym obszarem dla pliku Html.BeginForm jest zawsze bieżący obszar w ASP.NET MVC?

@using (Html.BeginForm("Logout", "Account", FormMethod.Post, new { id = ViewIDs.Shared._AuthenticationPartial.LogoutForm })) { 

To działało w porządku z mojego domu i rachunek poglądów, to znaczy, że wygenerowana postać, która wysłane do ~/Account/Logout. Jednak w przypadku korzystania z widoku w obszarze o nazwie "Osoba", nagle wysłana do ~/Person/Account/Logout.

Teraz udało mi się rozwiązać ten problem w następujący sposób:

@using (Html.BeginForm("Logout", "Account", new { area = "" }, FormMethod.Post, new { id = ViewIDs.Shared._AuthenticationPartial.LogoutForm })) { 

Czy to dobry sposób, żeby to zrobić, to jest to domyślny obszar definicji obecny obszar? Czy mam problem z konfiguracją w mojej aplikacji?

+0

Tak, to jest właściwa droga. Potrzebujesz 'new {area =" "}}, ponieważ domyślnym obszarem jest bieżący obszar. – nemesv

Odpowiedz

3

To jest właściwa droga. Środowisko ASP.NET MVC domyślnie używa bieżących wartości tras w pomocnikach HTML. W ten sposób można uzyskać jedynie podanie nazwy akcji podczas łączenia z operacją w tym samym kontrolerze. Jeśli łączysz się z innym obszarem, musisz to tak określić.