2011-07-02 21 views
7

Đây chỉ là một ví dụ mà tôi không thể tìm ra cách để nó hoạt động.Thư mục Bộ điều khiển MVC3 sẽ không xuất hiện trong URL

Trong thư mục Bộ điều khiển MVC3, nếu tôi thêm thư mục mới có tên "Quản trị" và thêm bộ điều khiển "Tin tức" với hành động "Chỉ mục", bạn gặp lỗi máy chủ khi bạn cố gắng mở url đó (404):

http://url/Admin/News

Ngay cả khi bạn gõ "/ Index" đằng sau nó, nó sẽ không làm việc. Làm thế nào bạn có thể tạo ra một hệ thống phân cấp mà sẽ dẫn đến URL tương tự? Chỉ cần được rõ ràng, tôi muốn tạo như của URL:

http://url/folder1/folder2/controller/action

Cảm ơn

Trả lời

16

Bạn đang suy nghĩ trong những suy nghĩ của "đường dẫn tập tin vật lý" vẫn còn. .NET MVC sử dụng khái niệm định tuyến nơi bạn định nghĩa các tuyến đường ánh xạ tới các lớp và hành động của bộ điều khiển. Nói một cách đơn giản, bạn không lập bản đồ cho một tệp, bạn đang ánh xạ tới một lớp.

Nếu bạn nhìn vào tệp global.asax của dự án web của bạn, bạn sẽ thấy một phương thức có tên RegisterRoutes(). Phương thức này sẽ kết nối tất cả các tuyến có sẵn cho trang web của bạn sẽ được sử dụng để tìm đúng controller/action/param/pattern để thực hiện.

Bây giờ, cách tôi khuyên bạn nên giải quyết những gì bạn đang tìm kiếm sẽ là tạo một khu vực. Có vẻ như bạn muốn có một bộ phận hành chính để trang web của bạn vì vậy tôi muốn làm như sau:

Nhấp chuột phải vào dự án trang web của bạn, chọn "Add", chọn "Area"

enter image description here

Đặt tên cho khu vực của bạn, trong trường hợp này "Quản trị" sẽ có ý nghĩa

Bây giờ, trình khám phá giải pháp của bạn sẽ thêm Quản trị viên "khu vực". Chú ý cách nó bắt chước cấu trúc và cách bố trí của dự án chuẩn, chỉ trong thư mục riêng của nó.

enter image description here

Thêm một bộ điều khiển trong khu vực hành chính mới được tạo ra và đặt tên là "Tin tức" Thêm hành động của bạn

Dưới đây là một URL kết quả kiểm tra thực hiện điều này:

enter image description here

này giải pháp là vì mục đích đơn giản. Nếu bạn muốn thực hiện nếu tiếp tục, bạn sẽ phải nghiên cứu kỹ các tuyến đường của riêng mình trong phương thức RegisterRoutes() mà tôi đã nói ở trên. Định tuyến là thứ bạn nên nắm bắt được vì vậy tôi khuyên bạn nên làm như vậy.

+0

Không thể nhận được bất kỳ câu trả lời nào tốt hơn. Cảm ơn bạn rất nhiều vì câu trả lời của bạn! – user825887

Các vấn đề liên quan