Frage

Ich bin an einem neuen Projekt arbeiten, wo ich Phil Haack Bereiche (1) Idee + Steve Sanderson zwicken (2) verwendet werden soll. Ich habe eine einfache Stammansicht mit einer Aktion Link zu einer Ansicht, die eine Fläche (foo). Die URL, die erzeugt wird, hat den richtigen Bereich, aber es hängt die Root-Controller (Bar) am Ende. Hier ist mein Stammansicht Code:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<%= Html.ActionLink("Foo Index Page", "Index", new { area="Foo" } )%>

</asp:Content>

und hier ist die URL, die es erzeugt:

localhost: 6494 / foo / bar

Jede Idee, warum die "/ Bar" ist dort?

(1): haacked.com/archive/2008/ 04.11 / Bereiche-in-aspnetmvc.aspx

(2): Blog .codeville.net / 2008/11/05 / app-Zonen-in-aspnet-mvc-take-2 /

War es hilfreich?

Lösung

Ich habe eine Lösung gefunden. Ich glaube nicht, es ist angemessen, so dass ich für eine Verbesserung bitten. Durch einen Controller Namen angeben, kann ich die URL bekommen richtig zu bilden. D.

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<%= Html.ActionLink("Foo Index Page", "Index", new { area="Foo", controller="Baz" } )%>

</asp:Content>

Als ich das tat, dann die URL korrekt war

localhost: 6494 / Foo

Warum ist das ein Problem? Phils Demo verwendet den Controller mit dem Namen Homecontroller. Ich weiß nicht, (weil ich nicht nachvollziehen kann), wie die Html.ActionLink () Methode geht über die URL konstruieren; aber es sieht aus, als ob es auf einem Standardfall setzt den Homecontroller bestehenden, die ich nicht haben.

Wenn jemand einen Vorschlag über hat, wie für Controller, damit nicht nach Hause namens der Standard sein, antworten Sie bitte. Dank

Andere Tipps

nicht Home als Standard-Controller-Namen haben, einfach die Standardroute ändern.

@ Joe

In Ihrem App_Start / RouteConfig.cs Datei, die Sie Wert ändern für Standard-Controller von zu Hause haben, was auch immer Sie mögen:

routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "NAME_OF_YOUR_HOME_CONTROLLER", action = "Index", id = "" }  // Parameter defaults
        );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top