Question

Je travaille sur un nouveau projet où je veux utiliser Phil Haack zones (1) + idée de tweak de Steve Sanderson (2). J'ai une vue simple racine avec un lien d'action à vue une zone (Foo). L'URL générée a la zone appropriée, mais il ajoute le contrôleur racine (bar) à la fin. Voici mon code de vue racine:

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

<h2>Index</h2>

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

</asp:Content>

et est ici l'URL qu'il génère:

localhost: 6494 / Foo / Bar

Toute idée pourquoi le "/ Bar" est là-bas?

(1): haacked.com/archive/2008/ 11/04 / zones-en-aspnetmvc.aspx

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

Était-ce utile?

La solution

Je l'ai trouvé une solution. Je ne pense pas qu'il soit approprié, je vais donc demander une amélioration. En spécifiant un nom de contrôleur, je peux obtenir l'URL pour former correctement. 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>

Une fois que je l'ai fait, l'URL est correcte

localhost: 6494 / Foo

Pourquoi est-ce un problème? La démo de Phil utilise le contrôleur avec le nom HomeController. Je ne sais pas (parce que je ne peux pas tracer) comment la méthode Html.ActionLink () va sur la construction de l'URL; mais il semble que si elle se fonde sur un cas par défaut de HomeController existant, que je n'ai pas.

Si quelqu'un a une suggestion sur la façon de permettre les contrôleurs ne sont pas nommées maison pour être la valeur par défaut, s'il vous plaît répondre. Merci

Autres conseils

Pour ne pas avoir Home comme le nom du contrôleur par défaut, il suffit de changer la route par défaut .

@ Joe

Dans votre App_Start / fichier RouteConfig.cs vous devez changer la valeur par défaut pour le contrôleur de la maison à ce que vous voulez:

routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "NAME_OF_YOUR_HOME_CONTROLLER", action = "Index", id = "" }  // Parameter defaults
        );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top