2010-01-11 30 views
5

Tengo una acción que tiene dos GUID:ASP.NET MVC enrutamiento dos GUID

public class MyActionController : Controller 
{ 
    //... 

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

Me gustaría que el siguiente URI para asignar a la acción:

/myaction/movetotab/1/2 

... con 1 corresponde Param1 y 2 para param2.

¿Cómo se verá la ruta, y es posible asignar los argumentos a los parámetros con un tipo de Guid?

Respuesta

7

Sí, es posible asignar los parámetros a System.Guid

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

o

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

revise sus parámetros ... Creo que el segundo debe ser param2 no param1. –

+0

Gracias, debería ser param2 –

+0

¿Funciona esto porque Guid toma una cadena como parámetro en una de sus sobrecargas de constructor, o la estructura MVC convierte la cadena entrante de la URL a una Guid? ¿Funcionará este proceso para cualquier objeto? –

3

Usted puede tomar en sus dos GUID como cadenas, y convertirlos a GUID real de objetos utilizando el GUID constructor que acepta un valor de cadena. Utilice la ruta que eu-ge-ne proporcionó.

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