Pregunta

Estoy trabajando en un nuevo proyecto en el que quiero utilizar la idea de Phil Haack Areas (1) + el ajuste de Steve Sanderson (2).Tengo una vista 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 (Bar) al final.Aquí está mi código de vista raíz:

<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 URL que genera:

localhost:6494/Foo/Bar

¿Alguna idea de por qué "/Bar" está ahí?

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

¿Fue útil?

Solución

He encontrado una solución.No creo que sea apropiado, por lo que pediré una mejora.Al especificar un nombre de controlador, puedo hacer que la URL 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, la URL era correcta.

localhost:6494/Foo

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

Si alguien tiene alguna sugerencia sobre cómo permitir que los controladores que no se llaman Inicio sean los predeterminados, responda.Gracias

Otros consejos

Para no tener Home como el nombre de controlador por defecto, simplemente cambiar la ruta por defecto .

@ 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
        );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top