ASP MVC Áreas e ActionLink
-
22-08-2019 - |
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 /
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
);