지금까지 (간결) 나는 Global.asax에 하나 개의 경로는 다음과 같이 등록 : "rootNamespace는"ASP.NET MVC의 기본 노선
var rootNamespace = new RouteValueDictionary(new { namespaces = new[] { "MyApp.Web.Controllers" } });
routes.Add(new LowercaseRoute("{action}/{id}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new { controller = "Home", action = "Index", id = UrlParameter.Optional }),
DataTokens = rootNamespace
});
입니다
경우 LowercaseRoute는 Route를 상속하며 모든 경로를 소문자로 만듭니다. 또한 다음과 같이 등록 된 지역이 있습니다context.Routes.Add(new LowercaseRoute("admin/{controller}/{action}/{id}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new { action = "List", id = UrlParameter.Optional }),
DataTokens = adminNamespace
});
adminNamespace가 다른 네임 스페이스, 기본 경로에서와 같은 생각하지만, 올바른 네임 스페이스.
http://example.com/contact <- default route, "Home" controller
http://example.com/admin/account <- area route, "Account" controller, default "List" action
문제는이
http://example.com/admin/home/contact
도 작동한다는 것입니다 : 이것은 잘 작동, I는 다음과 같이 URL에 액세스 할 수 있습니다. "admin"영역에는 "contact"액션이있는 "home"컨트롤러가 없습니다. "/ contact"에서 올바른 페이지를 가져 오지만 URL은 "/ admin/home/contact"입니다.
이 문제를 방지 할 수있는 방법이 있습니까?
감사합니다.
"UseNamespaceFallback = false"를 관리 영역에 추가 DataTokens 사전은 문제를 해결했습니다. 감사! – pbz