我想组织我的解决方案并且我查看了区域,但似乎是:' ControllerName '的请求找到了以下匹配的控制器...... 错误是成名。
我添加了Admin
区域,我项目的文件夹结构如下所示:
在我的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" }
);
我已在Application_Start
方法上阅读here来执行此操作:
ControllerBuilder.Current.DefaultNamespaces.Add("X.Web.Controllers");
可悲的是,它没有修复错误。然后我读了here以在RegisterRoutes方法中添加默认(根)控制器的命名空间。
我知道区域都是关于路由的,只需要文件夹,但它们很有用。
我想知道在这种情况下如何将路线映射到特定的HomeController
,一个位于X.Web.Controllers
,另一个位于X.Web.Areas.Admin.Controllers
。另外,我想知道是否可以使用@Html.RouteLink
帮助程序而不是ActionLink
生成链接,因为在所有中我到目前为止读到的示例链接正在使用ActionLink
方法生成...这让我怀疑。
我将非常感谢您提供的任何帮助/指导。感谢。
答案 0 :(得分:1)
我偶然发现了一个类似的问题,因为我找不到一个“干净”的解决方案,我最终重命名了一个HomeControllers - 这应该会有所帮助。
至于链接 - 是的,可以生成它们,你需要将区域名称添加到其中一个参数(routeValues),所以:
@Html.ActionLink("link text", "ActionName", "ControllerName", new { area = "Admin" })