Domanda

Sto lavorando a un nuovo progetto in cui voglio usare Phil Haack Areas (1) idea + ritocco di Steve Sanderson (2). Ho una semplice vista di base con un collegamento ricorso ad una vista un'area (Foo). L'URL che viene generato ha la zona corretta, ma aggiunge il controller principale (Bar) alla fine. Ecco il mio codice della vista root:

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

<h2>Index</h2>

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

</asp:Content>

ed ecco l'URL che genera:

localhost: 6494 / Foo / Bar

Qualsiasi idea del perché il "/ Bar" è lì?

(1): haacked.com/archive/2008/ 11/04 / aree-in-aspnetmvc.aspx

(2): blog .codeville.net / 2008/11/05 / app-aree-in-aspnet-MVC-take-2 /

È stato utile?

Soluzione

Ho trovato una soluzione. Non credo sia opportuno, quindi mi chiedere un miglioramento. Specificando un nome del controller, posso ottenere l'URL per formare in modo corretto. Cioè.

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

<h2>Index</h2>

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

</asp:Content>

Una volta che ho fatto questo, l'URL è stato corretto

localhost: 6494 / Foo

Perché questo è un problema? demo di Phil utilizza il controller con il nome HomeController. Non so (perché non riesco a rintracciare) come il metodo Html.ActionLink () va in giro costruire l'URL; ma sembra come se si basa su un caso di default di HomeController esistente, che non ho.

Se qualcuno ha un suggerimento su come consentire controllori non nominati Home per essere il default, la preghiamo di rispondere. Grazie

Altri suggerimenti

Per non avere Home come il nome del controller di default, semplicemente cambiare il percorso di default .

@ Joe

Nel vostro App_Start / file RouteConfig.cs dovete cambiare il valore per il controller di default da casa a quello che vuoi:

routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "NAME_OF_YOUR_HOME_CONTROLLER", action = "Index", id = "" }  // Parameter defaults
        );
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top