ASP MVC Áreas e ActionLink

votos
13

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 raiz simples, 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/areas-in-aspnetmvc.aspx

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

Publicado 19/05/2009 em 15:49
fonte usuário
Em outras línguas...                            


3 respostas

votos
20

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. IE

<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

Por que isso é um problema? 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. obrigado

Respondeu 19/05/2009 em 16:43
fonte usuário

votos
2

Para não ter Homecomo o nome do controlador padrão, simplesmente mudar a rota padrão .

Respondeu 19/05/2009 em 16:52
fonte usuário

votos
0

@ Joe

Em sua App_Start / RouteConfig.cs arquivo que você tem para 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
        );
Respondeu 27/06/2013 em 18:30
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more