Ограничьте контроллеры только определенной областью - PullRequest
1 голос
/ 10 апреля 2010

У меня есть одна область, и в AreaRegistration я определил пространство имен, к которому принадлежат все контроллеры в области.

context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { controller="Home", action = "Index", id = UrlParameter.Optional },
                new[] { "MySite.Admin.Controllers" }             // Namespaces
            );

Как запретить вызов контроллера в этой области, даже если этот маршрут не соответствует. И.Е. / home / index (без слова «admin» в начале).

ПРИМЕР:

Если есть контроллер "MySite.Admin.Controllers.HomeController", который принадлежит области root, определенной выше. Я хочу запретить фабрике контроллеров искать этот контроллер (то есть генерировать исключение), если он не соответствует маршруту "Admin / {controller} / {action} / {id}" ("Admin" в конце). Поэтому, если я введу «home / index» (вначале нет «Admin»), веб-сайт выдаст ошибку, что он не может найти контроллер.

Надеюсь, я был достаточно ясен.

1 Ответ

2 голосов
/ 11 апреля 2010

Добавьте ограничение, соответствующее области!

Здесь - хорошее прочтение ограничений маршрута.

Если вы хотите написать собственное ограничение маршрута, прочитайте следующее

http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/01/11/asp-net-mvc-route-constraints.aspx

Изменить:

Удалите маршрут по умолчанию и убедитесь, что все ограничено областями, тогда home / index выдаст исключение, поскольку оно не ограничено областью.

...