1

我想组织我的解决方案,并查看了一些区域,但似乎:对“ 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" }
);

我在这里Application_Start阅读了我的方法来做到这一点:

ControllerBuilder.Current.DefaultNamespaces.Add("X.Web.Controllers");

可悲的是它没有修复错误。然后我在这里阅读到添加默认(根)控制器的名称空间,在 RegisterRoutes 方法中。

我知道区域都是关于路由的,文件夹只是需要的,但它们很有用。

HomeController在这种情况下,我想知道如何将我的路线映射到特定的路线,一条在X.Web.Controllers,另一条在X.Web.Areas.Admin.Controllers. 另外,我想知道是否可以使用@Html.RouteLink帮助程序而不是生成链接ActionLink,因为在我到目前为止阅读的所有ActionLink示例中,链接都是使用该方法生成的……这让我怀疑。

我将不胜感激提供的任何帮助/指导。谢谢。

4

1 回答 1

1

我偶然发现了一个类似的问题,由于找不到“干净”的解决方案,我最终重命名了其中一个 HomeController——这应该会有所帮助。

至于链接 - 是的,可以生成它们,您需要将区域名称添加到参数之一(routeValues),所以:

@Html.ActionLink("link text", "ActionName", "ControllerName", new { area = "Admin" })
于 2012-09-18T17:22:50.237 回答