2009-05-19 12 views
13

Estoy trabajando en un nuevo proyecto en el que quiero utilizar Phil Haack Areas (1) idea + Steve Sanderson's tweak (2). Tengo una vista de raíz simple con un enlace de acción para ver un área (Foo). La URL que se genera tiene el área adecuada, pero agrega el controlador raíz (Barra) al final. Aquí está mi raíz código de la vista:ASP MVC Areas y ActionLink

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

<h2>Index</h2> 

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

</asp:Content> 

y aquí está la dirección URL que genera:

localhost: 6494/foo/bar

Alguna idea de por qué el "/ bar" es allí?

(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/

Respuesta

20

que he encontrado una solución. No creo que sea apropiado, entonces pediré una mejora. Al especificar un nombre de controlador, puedo obtener la URL para que se forme correctamente. ES DECIR.

<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 vez que hice esto, entonces la URL era correcta

localhost: 6494/Foo

¿Por qué es esto un problema? La demostración de Phil usa el controlador con el nombre HomeController. No sé (porque no puedo rastrear) cómo el método Html.ActionLink() trata de construir la URL; pero parece que se basa en un caso predeterminado de HomeController existente, que no tengo.

Si alguien tiene una sugerencia sobre cómo permitir que los Controladores que no se denominan Inicio sean los predeterminados, responda. Gracias

0

@ Joe

En su App_Start/presentar RouteConfig.cs usted tiene que cambiar el valor por defecto para el controlador desde su casa a lo que quiera:

routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "NAME_OF_YOUR_HOME_CONTROLLER", action = "Index", id = "" } // Parameter defaults 
     ); 
Cuestiones relacionadas