2010-01-11 10 views
5

ich eine Aktion zwei GUIDs habe:ASP.NET MVC Routing zwei GUIDs

public class MyActionController : Controller 
{ 
    //... 

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

Ich würde die folgende URI gerne auf die Aktion zur Karte:

/myaction/movetotab/1/2 

... mit 1 entsprechen zu Param1 und 2 zu Param2.

Wie sieht die Route aus, und ist es möglich, die Argumente Parametern mit einem Guid-Typ zuzuordnen?

Antwort

7

Ja, ist es möglich, Ihre Parameter System.Guid

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

oder

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

überprüfen Sie Ihre Params ... Ich denke, die zweite sollte param2 nicht param1 sein. –

+0

Danke, es sollte param2 sein –

+0

Funktioniert das, weil Guid eine Zeichenfolge als Parameter in einer seiner Konstruktorüberladungen verwendet, oder wird das MVC-Framework die eingehende Zeichenfolge von der URL an Guid? Funktioniert dieser Prozess für jedes Objekt? –

3

Sie zuordnen können in Ihrem zwei GUIDs als Strings nehmen und wandeln sie in die tatsächliche GUID-Objekte mithilfe der GUID Konstruktor, der einen Zeichenfolgenwert akzeptiert. Verwenden Sie die Route, die eu-ge-ne zur Verfügung gestellt hat.

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); 
    }