我工作的一个新项目中,我想用菲尔*哈克领域(1)思想+史蒂夫*桑德森的调整(2)条。我有一个简单的根景与行动的链接查看一区域(Foo).该网址是产生具有适当的地区,但它将根控制器(酒吧)的末尾。这是我根本看码:

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

<h2>Index</h2>

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

</asp:Content>

这里是网址,它产生:

localhost:6494/Foo/吧

任何想法为什么"棒"是在那里?

(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,以形成正确的。即。

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

<h2>Index</h2>

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

</asp:Content>

在我这样做,则URL是正确

本地主机:6494 /富

为什么这是一个问题?菲尔的演示使用名为HomeController的控制器。我不知道(因为我不能跟踪)的Html.ActionLink()方法如何去约构造URL;但它看起来好像它是依靠现有的HomeController的默认情况下,我没有。

如果任何人有关于如何允许不在家命名为默认的控制器的建议,请回复。感谢

其他提示

不有 Home 作为默认的控制器的名称、简单 更改默认的路线.

@Joe

在您的App_Start / RouteConfig.cs文件,你必须改变,无论你喜欢从首页默认控制器值:

routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "NAME_OF_YOUR_HOME_CONTROLLER", action = "Index", id = "" }  // Parameter defaults
        );
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top