vista tutorial paso net mvc modelo form ejemplo controlador asp c# asp.net-mvc asp.net-mvc-2 url modelbinders

c# - tutorial - En ASP.NET MVC 2, ¿puedo deserializar una cadena de consulta en una matriz usando el ModelBinder predeterminado?



razor mvc (3)

En ASP.NET MVC 2, puede usar esta URL y este método de controlador:

GET http://server/controller/get?id=5 public ActionResult Get(int id) { ... }

Y el ModelBinder convertirá id=5 querystring a id = (int) 5 en el parámetro del método. Sin embargo, esto no funcionará:

GET http://server/controller/get?idlist=1,2,3,4,5 public ActionResult Get(int[] idlist) { ... }

idlist será nulo en el parámetro. Aunque el análisis sintáctico para esto es bastante trivial, me preguntaba si hay alguna forma de cambiar la firma del método o la cadena de consulta para hacer que el ModelBinder predeterminado deserialice automáticamente las matrices / colecciones.


Con el modelbinder predeterminado, la URL debe ser

http://server/controller/get?idlist=1&idlist=2&idlist=3&idlist=4&idlist=5

o

http://server/controller/get?idlist[]=1&idlist[]=2&idlist[]=3&idlist[]=4&idlist[]=5

Si realmente quieres usar idlist = 1,2,3,4,5, deberías tener tu propia carpeta


Esto es lo que pienso:

public ActionResult Get(int id) { ... }

Debería usarse como

GET http://server/controller/get/5

Y la idlist se puede dividir simplemente por coma (,)


Esto es un poco tarde para la fiesta, pero quería hacer exactamente lo mismo.

Puede pasar la cadena única como {1,2} y la carpeta lo vinculará a una matriz, por ejemplo

<input name="idlist" type="text" value="{163,162}">