này không hoạt động khi url là như thế này localhost: 2474/SOProblems/thư mục con/ChildController/index
Đó là bình thường. Mô hình tuyến đường của bạn trông giống như sau: SubFolder/ChildController
và không phải là SubFolder/ChildController/index
. Ngoài ra, bạn đã xác định tuyến đường của mình ở địa điểm WRONG. Bạn đã xác định nó trong định nghĩa tuyến đường chính của bạn và không phải trong định nghĩa tuyến đường khu vực của bạn. Vì vậy, thoát khỏi định nghĩa đường tùy chỉnh từ các tuyến đường chính của bạn và thêm nó vào tập tin SOProblemsAreaRegistration.cs
(đó là nơi SOProblems
tuyến đường của bạn cần được đăng ký):
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"SubFolderRoute",
"SOProblems/SubFolder/ChildController",
new { controller = "ChildController", action = "Index" },
new[] { "Practise.Areas.SOProblems.Controllers.SubFolder" }
);
context.MapRoute(
"SOProblems_default",
"SOProblems/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
Cũng kể từ khi mô hình tuyến đường của bạn (SOProblems/SubFolder/ChildController
) không có khả năng chỉ định một tên hành động, bạn chỉ có thể có một hành động trên bộ điều khiển này và đó sẽ là hành động mặc định mà bạn đã đăng ký (index
) trong trường hợp này.
Nếu bạn muốn có nhiều hành động trên bộ điều khiển này nhưng chỉ số là một mặc định, bạn nên bao gồm rằng trong mô hình tuyến đường của bạn:
context.MapRoute(
"SubFolder",
"SOProblems/SubFolder/ChildController/{action}",
new { controller = "ChildController", action = "Index" },
new[] { "Practise.Areas.SOProblems.Controllers.SubFolder" }
);
Trong cả hai trường hợp định nghĩa tuyến đường chính của bạn có thể ở lại với các giá trị mặc định của họ :
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home", action = "Index" }
);
}
"Không hoạt động" có nghĩa là chính xác là gì? – TGlatzer
@ Grumbler85 - url được thử lần cuối cho 404, –
Backtick chỉ ở đây "SubFolder'/ChildController"? Và kiểm tra xem bạn không gian tên bên trong thư mục con được đặt chính xác chưa. – TGlatzer