2010-06-08 31 views
11

Tôi đã nhìn vào định tuyến trên StackOverflow và tôi đã có một câu hỏi rất noobie, nhưng một cái gì đó tôi muốn làm rõ không ít hơn.ASP.NET MVC Định tuyến người dùng như thế trong StackOverflow?

Tôi đang tìm cách cụ thể tại các điều khiển người dùng

https://stackoverflow.com/Users
https://stackoverflow.com/Users/Login
https://stackoverflow.com/Users/124069/rockinthesixstring

Những gì tôi đang nhận thấy là có một "Người dùng" điều khiển có lẽ với một mặc định "Index" hành động và hành động "Đăng nhập". Vấn đề tôi đang gặp phải là hành động đăng nhập có thể bị bỏ qua và "UrlParameter.Optional [ID]" cũng có thể được sử dụng.

Chính xác điều này trông như thế nào trong bộ sưu tập RegisterRoutes? Hoặc tôi thiếu một cái gì đó hoàn toàn rõ ràng?

CHỈNH SỬA: Đây là tuyến đường hiện tại của tôi .. nhưng chắc chắn là không phù hợp.

routes.MapRoute(_ 
     "Default", _ 
     "{controller}/{id}/{slug}", _ 
     New With {.controller = "Events", .action = "Index", .id = UrlParameter.Optional, .slug = UrlParameter.Optional} _ 
    ) 
+0

Không chắc chắn lý do mọi người bỏ phiếu để đóng. Đây là một câu hỏi lập trình hợp pháp .. Tôi thực sự quan tâm đến việc tìm ra điều này. –

+0

Bạn thấy phiếu bầu ở đâu? –

+0

Điều này không __not__ thuộc về Meta. –

Trả lời

5

Có lẽ chỉ sử dụng một lộ trình cụ thể để xử lý nó, cũng sử dụng regex để chỉ định định dạng ID (vì vậy nó không bị lẫn lộn với các tuyến đường khác có chứa tên hành động ở vị trí đó).

// one route for details 
routes.MapRoute("UserProfile", 
    "Users/{id}/{slug}", 
    new { controller = "Users", action = "Details", slug = string.Empty }, 
    new { id = @"\d+" } 
); 
// one route for everything else 
routes.MapRoute("Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional} 
); 
+0

Tôi đồng ý phương pháp tiếp cận thẳng này sẽ hoạt động nhưng tôi cũng nghi ngờ cách tiếp cận của tác giả phức tạp hơn một chút: các tuyến được lưu trữ trong các tệp bên ngoài và được tải trong thời gian chạy trong khi trình trợ giúp định tuyến tập lệnh java được tạo theo yêu cầu đầu tiên :) thực hành ở đây –

+0

Bất kể cách các tuyến được nạp vào, bạn phải có một số cách cụ thể để mô tả cách ánh xạ tuyến đường đến controller.action với các tham số thích hợp. Đúng? –

+0

Có. Nó sẽ rất tốt đẹp nếu các tác giả sẽ đi xuống và trả lời :) –

1

Nếu không có nhà phát triển SO đưa ra câu trả lời rõ ràng, kỹ thuật đảo ngược có thể mang lại nhiều kết hợp và hoán vị có thể. Dưới đây là một trong những điều tôi nghĩ sẽ phù hợp với quá:

routes.MapRoute(
    "UserProfile", 
    "Users/{id}/{slug}", 
     new { controller = "Users", action = "Profile" } 
); 

routes.MapRoute(
    "UserLogin", 
    "Users/Login", 
    new { controller = "Users", action = "Login" } 
); 

routes.MapRoute(
    "DefaultUser", 
    "Users", 
    new { controller = "Users", action = "Index" } 
); 
Các vấn đề liên quan