0

我有一个布局页面~/Views/Shared/_Layout.cshtml,它适用于所有渲染的普通视图。但是,我创建了一个名为“Demos”的区域,并在~/Areas/Demos/Views/_ViewStart.cshtml文件中将其指向了我的原始布局页面。

这工作得很好,除了一些调用@Html.ActionLink()现在以区域名称为前缀。因此,在哪里@Html.ActionLink("Blog", "Index", "Blog")通常会在区域视图上生成类似“website.com/Blog/Index”的链接,它会生成“website.com/Demos/Blog/Index”。

有任何想法吗?

4

1 回答 1

0

要使用区域,请打开 Global.asax 文件并将以下代码插入 Application_Start 方法

AreaRegistration.RegisterAllAreas();

您可以像在任何 MVC 应用程序中一样在区域内链接,但要生成到不同区域的链接,您必须在这些方法的 routeValues 参数中显式传递目标区域名称。

@Html.ActionLink("Blog", "Index", "Blog", new { area = "blog" }, null)

null参数是必需的,因为具有 routeValues 参数的 ActionLink 方法重载也具有 htmlAttributes 参数,但它不是必需的,以便能够在区域之间进行链接。

更新

您可以使用RouteLink()代替ActionLink(), 来绕过区域注册。

@Html.RouteLink("Blog", "MyRoute", new { action = "Index", controller = "Blog" })

第二个参数(“MyRoute”)是注册的路由名称,Global.asax用于RouteLink()连接不同区域,只需要指定正确的路由名称即可。

于 2012-04-11T19:36:57.790 回答