我正在一个新项目,我想使用Phil Haack Areas(1)的想法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>
这是它产生的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/
解决方法
我找到了一个解决方案我不认为这是适当的,所以我会要求改进.通过指定控制器名称,我可以正确地获取URL的形式. I.E.
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>Index</h2> <%= Html.ActionLink("Foo Index Page",new { area="Foo",controller="Baz" } )%> </asp:Content>
一旦我这样做,那么URL是正确的
本地主机:6494 /美孚
为什么这是一个问题? Phil的演示使用名为HomeController的控制器.我不知道(因为我无法追踪)Html.ActionLink()方法是如何构造URL的;但它看起来好像是依赖于我没有的HomeController存在的默认情况.
如果有人建议如何让未命名的控制器为默认,请回复.谢谢