【发布时间】:2012-09-18 17:09:03
【问题描述】:
我想组织我的解决方案并查看了一些区域,但似乎:对“ControllerName”的请求已找到以下匹配的控制器...错误是出名了。
我添加了一个Admin 区域,我的项目的文件夹结构如下所示:
- 区域
- 管理员
- 控制器
- 家庭控制器
- AdminAreaRegistration.cs
- 管理员
- 控制器
- 家庭控制器
在我的 AdminAreaRegistration 文件中,我有这个:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
我在注册路线时这样做:
routes.MapRoute(
"Home",
"Home/Index",
new { controller = "Home", action = "Index" }
);
我已阅读 here 以在我的 Application_Start 方法上执行此操作:
ControllerBuilder.Current.DefaultNamespaces.Add("X.Web.Controllers");
遗憾的是它没有修复错误。然后我阅读here,在RegisterRoutes方法中添加默认(根)控制器所在的命名空间。
我知道区域都是关于路由的,文件夹只是需要,但它们很有用。
我想知道在这种情况下如何将我的路线映射到特定的HomeController,一个在X.Web.Controllers,另一个在X.Web.Areas.Admin.Controllers。另外,我想知道是否可以使用 @Html.RouteLink 帮助程序而不是 ActionLink 生成链接,因为在 all 我到目前为止阅读的示例中,链接是使用 @ 生成的987654333@方法...这让我怀疑。
感谢您提供的任何帮助/指导。谢谢。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas asp.net-mvc-3-areas