2009-05-19 18 views
13

Ich arbeite an einem neuen Projekt, wo ich Phil Haack Areas (1) Idee + Steve Sanderson Tweak (2) verwenden möchte. Ich habe eine einfache Grundansicht mit einem Aktionslink zu einem Bereich (Foo). Die URL, die generiert wird, hat den richtigen Bereich aber es hängt den Stamm-Controller (Balken) an dem Ende an. Hier ist mein Stammansicht Code:ASP MVC Areas und ActionLink

<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" dort ist?

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

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

Antwort

20

Ich habe eine Lösung gefunden. Ich denke nicht, dass es angemessen ist, also werde ich um eine Verbesserung bitten. Durch Angabe eines Controllernamens kann ich die URL korrekt erstellen. I.E.

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

<h2>Index</h2> 

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

</asp:Content> 

Sobald 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 beim Erstellen der URL vorgeht. aber es sieht so aus, als würde es sich auf einen Standardfall von HomeController verlassen, den ich nicht habe.

Wenn jemand einen Vorschlag hat, wie man Controller zulassen kann, die nicht Home sind, antworten Sie bitte. Danke

0

@ 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 
     );