Bienvenido a nuestro sitio web, en este sitio vas a hallar la solucíon a lo que buscabas.
Solución:
El enlazador de modelos predeterminado espera esta URL:
http://localhost:54119/Designs/Multiple?ids=24041&ids=24117
para enlazar con éxito a:
public ActionResult Multiple(int[] ids)
...
Y si desea que esto funcione con valores separados por comas, puede escribir un archivador de modelo personalizado:
public class IntArrayModelBinder : DefaultModelBinder
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
y luego podría aplicar este modelo de carpeta a un argumento de acción en particular:
public ActionResult Multiple([ModelBinder(typeof(IntArrayModelBinder))] int[] ids)
...
o aplicarlo globalmente a todos los enteros array parámetros en su Application_Start
en Global.asax
:
ModelBinders.Binders.Add(typeof(int[]), new IntArrayModelBinder());
y ahora la acción de su controlador podría verse así:
public ActionResult Multiple(int[] ids)
...
Para ampliar la respuesta de Darin Dimitrov, algo con lo que puede salirse con la suya es aceptar un simple string
en su parámetro de URL y convertirlo en un array tú mismo:
public ActionResult Multiple(string ids)
int[] idsArray = ids.Split(',').Select(int.Parse).ToArray();
/* ...process results... */
Si obtiene un error de análisis al hacer esto (porque alguien le pasó un array), puede hacer que su controlador de excepciones devuelva un 400 Bad Request
error en lugar del predeterminado, más hostil 404 Not Found
error que MVC devuelve cuando no se encuentra un punto final.
También puede usar este formato de URL y ASP.NET MVC hará todo por usted. Pero recuerde aplicar la codificación de URL.
?param1[0]=3344¶m1[1]=2222
Si para ti ha sido útil este post, sería de mucha ayuda si lo compartes con más juniors y nos ayudes a dar difusión a este contenido.