2013-06-06 7 views
7

Ich hatte das folgende Stück Code in meiner Razor Layout-Ansicht (die von allen Ansichten in meiner Anwendung gemeinsam genutzt wird):Ist der Standardbereich für Html.BeginForm immer der aktuelle Bereich in ASP.NET MVC?

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

Das funktionierte mit meinem Hause und Konto Blick in Ordnung, das heißt, eine Form gebracht, dass Posted in ~/Konto/Abmelden. Wenn sie jedoch mit einer Ansicht innerhalb eines Bereichs namens "Person" verwendet wurde, wurde sie plötzlich in ~/Person/Account/Logout verschoben.

Nun, ich war in der Lage, dies zu beheben, wie folgt:

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

Ist dies der richtige Weg, dies zu tun, das heißt, ist der Standardbereich der aktuelle Bereich per Definition? Oder habe ich ein Konfigurationsproblem in meiner Anwendung?

+0

Ja, das ist der richtige Weg. Sie benötigen das 'new {area =" "}', da der Standardbereich der aktuelle Bereich ist. – nemesv

Antwort

3

Es ist der richtige Weg. ASP.NET MVC verwendet implizit aktuelle Routenwerte in HTML-Helfern. Auf diese Weise können Sie auch nur den Aktionsnamen angeben, wenn Sie eine Verknüpfung zu einer Aktion im selben Controller herstellen. Wenn Sie zu einem anderen Bereich verlinken, müssen Sie dies so angeben.