ASP MVC领域和ActionLink

Joe*_*Joe 13 asp.net-mvc asp.net-mvc-areas

我正在开发一个新项目,我想使用Phil Haack Areas(1)idea + Steve Sanderson的调整(2).我有一个简单的根视图,其中包含一个视图区域(Foo)的动作链接.生成的URL具有适当的区域,但它在末尾附加根控制器(Bar).这是我的根视图代码:

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

<h2>Index</h2>

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

</asp:Content>
Run Code Online (Sandbox Code Playgroud)

这是它生成的URL:

本地主机:6494 /美孚/酒吧

知道为什么"/ Bar"在那里?

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

Joe*_*Joe 20

我找到了解决方案.我不认为这是合适的,所以我会要求改进.通过指定控制器名称,我可以正确地获取URL.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>
Run Code Online (Sandbox Code Playgroud)

一旦我这样做,那么URL是正确的

本地主机:6494 /美孚

为什么这是个问题?Phil的演示使用名为HomeController的控制器.我不知道(因为我无法追踪)Html.ActionLink()方法如何构建URL; 但它看起来好像是依赖HomeController的默认情况,我没有.

如果有人建议如何允许未命名为Home的控制器作为默认值,请回复.谢谢