2010-01-11 36 views
5

Tôi có một hành động dùng hai GUID:ASP.NET MVC Routing hai GUIDs

public class MyActionController : Controller 
{ 
    //... 

    public ActionResult MoveToTab(Guid param1, Guid param2) 
    { 
    //... 
    } 
} 

Tôi muốn URI sau để lập bản đồ để hành động:

/myaction/movetotab/1/2 

... với 1 tương ứng đến param1 và 2 đến param2.

Tuyến đường sẽ trông như thế nào và có thể ánh xạ đối số cho các tham số bằng loại Guid không?

Trả lời

7

Vâng, nó có thể để ánh xạ các tham số của bạn để System.Guid

routes.MapRoute(
    "MoveToTab", 
    "{controller}/{action}/{param1}/{param2}", 
    new { controller = "MyAction", action = "MoveToTab", 
     param1 = System.Guid.Empty, param2 = System.Guid.Empty } 
); 

hoặc

routes.MapRoute(
    "MoveToTab2", 
    "myaction/movetotab/{param1}/{param2}", 
    new { controller = "MyAction", action = "MoveToTab", 
     param1 = System.Guid.Empty, param2 = System.Guid.Empty } 
); 
+0

kiểm tra thông số của bạn ... Tôi nghĩ câu hỏi thứ hai nên là param2 không param1. –

+0

Cảm ơn, nó phải là param2 –

+0

Điều này có tác dụng không vì Guid lấy một chuỗi như một tham số trong một trong các quá tải khởi tạo của nó, hay khuôn khổ MVC truyền chuỗi đến từ URL tới một hướng dẫn? Quá trình này có hiệu quả với bất kỳ đối tượng nào không? –

3

Bạn có thể mất trong hai GUID của bạn như dây đàn, và chuyển đổi chúng thành thực tế GUID đối tượng sử dụng GUID constructor chấp nhận một giá trị chuỗi. Sử dụng tuyến đường mà eu-ge-ne cung cấp.

routes.MapRoute(
    "MoveToTab", 
    "myaction/movetotab/{param1}/{param2}", 
    new { controller = "MyAction", action = "MoveToTab", param1 = "", param2 = "" } 
); 

    public ActionResult MoveToTab(string param1, string param2) 
    { 
    Guid guid1 = new Guid(param1); 
    Guid guid2 = new Guid(param2); 
    }