2009-04-07 29 views
7

Tôi đang cố gắng viết một TinyURL giống như bản sao trong ASP.NET MVC như một dự án đầu tiên để làm quen với khung công tác.TinyURL giống như định tuyến với ASP.NET MVC?

Định tuyến URL vẫn còn hơi khó hiểu đối với tôi, đặc biệt là khi tôi đi chệch khỏi bộ điều khiển/hành động/id.

Có thể bất kỳ ai trong số các bạn ASP.NET MVC ninja giúp tôi thiết lập một tuyến đường URL đơn giản tương tự như cách TinyURL.com xử lý các tuyến đường của nó không?

Ví dụ:

www.tinyurl.com/

Chuyển hướng trang danh mục. Vì vậy, nếu không có tham số nào được truyền, thì chỉ cần gọi khung nhìn Index().

Tuy nhiên, nếu bạn nhập mã băm nhỏ xíu của mình, tôi cần gọi hành động redirect().

www.tinyurl.com/fbc13

Vì vậy, làm thế nào tôi sẽ đi về việc thiết lập đường tùy chỉnh này?

routes.MapRoute( 
       "Default",        // Route name 
       "{tinyhash}",       // URL with parameters 
       new { controller = "Link", action = "ReDirect", tinyhash = "" } // Parameter defaults 
      ); 

Đây không phải là hoàn toàn đúng, bởi vì nếu bạn chỉ cần truy cập trang web với không băm trong url, tôi đã có nó mặc định để chuyển hướng() hành động khi tôi muốn nó thay vào đó, gọi Index() phương pháp.

Đề xuất cách bắt chước một TinyURL cơ bản như tuyến đường?

Trả lời

12

Bạn đang đi đúng hướng. Tạo một tuyến đường trống và bạn sẽ không được chuyển hướng.

routes.MapRoute( 
    "Default", 
    "", 
    new { controller = "Home", action = "Index" } 
); 

và thay đổi mặc định của bạn một đến

routes.MapRoute( 
    "Redirect", 
    "{tinyhash}", 
    new { controller = "Link", action = "ReDirect", tinyhash = "" } 
); 

Hoặc bạn chỉ có thể có bộ điều khiển kiểm tra giá trị tinyhash và hiển thị một cái nhìn khác nhau nếu nó là trống rỗng. (đó là hacky)

+0

@benrick, cảm ơn một tấn! – KingNestor

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