我在~/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”。
有什么想法吗?
答案 0 :(得分: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()
在不同区域之间进行链接,您只需要指定正确的路线名称。