【问题标题】:Do controller names have to be unique even when in separate areas?即使在不同的区域中,控制器名称也必须是唯一的吗?
【发布时间】:2009-08-14 04:21:14
【问题描述】:

我有一个 ASP.NET MVC 网站和一个名为“Admin”的区域项目。

到目前为止,路由工作正常,除了似乎我不能在每个项目中拥有 2 个具有相同名称的控制器。

我认为以下 URL 都可以正常工作:

http://website.com/Home/Index

http://website.com/Admin/Home/Index

但事实证明,我在访问任何一个时都会收到以下错误:

控制器名称“Home”在以下类型之间不明确:

MyProject.Website.Controllers.HomeController

MyProject.Admin.Controllers。家庭控制器

这是正常的,还是我的设置有问题?


顺便说一句,这是我的路由代码:

主要项目:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    Admin.Routes.RegisterRoutes(routes);

    routes.MapAreaRoute(
        "Main",
        "default_route",
        "{controller}/{action}/{URLName}",
        new { controller = "Home", action = "Index", URLName = "" },
        new string[] { "MyProject.Website" }
    );
}

区域项目:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapAreaRoute(
        "Admin",
        "Admin_Default",
        "Admin/{controller}/{action}",
        new { controller = "Home", action = "Index" },
        new string[] { "MyProject.Admin" }
    );
}

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    看了this post后发现问题。

    我应该在第 5 个参数中指定“控制器”命名空间,而不仅仅是项目命名空间。

    例如

    new string[] { "MyProject.Admin.Controllers" }
    

    【讨论】:

    • 谢谢你真的很有帮助。添加命名空间后效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2011-07-01
    • 2014-04-18
    相关资源
    最近更新 更多