Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC Routing two GUIDs

I have an action taking two GUIDs:

public class MyActionController : Controller
{
  //...

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

I would like the following URI to map to the action:

/myaction/movetotab/1/2

...with 1 corresponding to param1 and 2 to param2.

What will the route look like, and is it possible to map the arguments to parameters with a type of Guid?

like image 662
Ben Aston Avatar asked Jan 11 '10 16:01

Ben Aston


2 Answers

Yes, it is possible to map your parameters to System.Guid

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

or

routes.MapRoute(
    "MoveToTab2",
    "myaction/movetotab/{param1}/{param2}",
    new { controller = "MyAction", action = "MoveToTab",
        param1 = System.Guid.Empty, param2 = System.Guid.Empty }
);
like image 131
eu-ge-ne Avatar answered Oct 08 '22 02:10

eu-ge-ne


You can take in your two GUIDs as strings, and convert them to actual GUID objects using the GUID constructor that accepts a string value. Use the route that eu-ge-ne provided.

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);
  }
like image 20
Robert Harvey Avatar answered Oct 08 '22 02:10

Robert Harvey