2009-08-14 3 views
2

У меня есть веб-сайт ASP.NET MVC и проект области под названием «Admin».Должны ли имена контроллеров быть уникальными даже в отдельных областях?

Пока что маршрутизация работает нормально, за исключением того, что, похоже, у меня не может быть 2 контроллера с одинаковым именем в каждом проекте.

Я думал, следующие URL-адреса будут оба работают нормально:

http://website.com/Home/Index

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

Но получается, что я получаю следующее сообщение об ошибке при обращении либо:

Контрольное имя «Главная» неоднозначен между следующими типами:

MyProject.Website.Controllers.HomeController

MyProject.Admin.Controllers. HomeController

Это нормально, или что-то не так с моей настройкой?


Кстати, вот мой код маршрутизации:

Основной проект:

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" } 
    ); 
} 

ответ

5

Нашел проблему после прочтения this post.

Я должен был указать пространство имен «Контроллеры» в 5-м аргументе, а не просто в пространстве имен проектов.

E.g.

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

Спасибо, что было действительно полезно. Хорошо работает после добавления пространства имен. – jesperlind

Смежные вопросы