Pergunta

Eu estou trabalhando em um novo projeto onde eu quero usar Phil Haack Áreas (1) ideia + puxão de Steve Sanderson (2). Eu tenho uma visão simples de raiz com um link de ação para uma visão de uma área (Foo). O URL que é gerado tem a área adequada, mas ele acrescenta o controlador de raiz (Bar) no final. Aqui está o meu código de exibição de raiz:

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

<h2>Index</h2>

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

</asp:Content>

e aqui está a URL que ele gera:

localhost: 6494 / Foo / Bar

Qualquer idéia de por que o "/ Bar" está lá?

(1): haacked.com/archive/2008/ 11/04 / áreas-em-aspnetmvc.aspx

(2): blogue .codeville.net / 2008/11/05 / app-áreas-em-aspnet-mvc-take-2 /

Foi útil?

Solução

Eu encontrei uma solução. Eu não acho que é conveniente, por isso vou pedir uma melhoria. Ao especificar um nome do controlador, posso obter a URL para formar corretamente. 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>

Uma vez eu fiz isso, então a URL estava correto

localhost: 6494 / Foo

Porque é que este problema um? demonstração de Phil usa o controlador com o nome HomeController. Eu não sei (porque eu não posso localizar) como o método ActionLink () vai sobre a construção da URL; mas parece que ele está confiando em um caso padrão de HomeController existente, o que eu não tenho.

Se alguém tem uma sugestão sobre como para permitir controladores não nomeados em casa a ser o padrão, responda. Graças

Outras dicas

Para não ter Home como o nome do controlador padrão, simplesmente alterar a rota padrão .

@ Joe

Em seu App_Start / RouteConfig.cs arquivo que você tem que alterar o valor para o controlador padrão de casa para o que quiser:

routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "NAME_OF_YOUR_HOME_CONTROLLER", action = "Index", id = "" }  // Parameter defaults
        );
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top