Связыватель модели по умолчанию ожидает этот URL:
http://localhost:54119/Designs/Multiple?ids=24041&ids=24117
, чтобы успешно связать с:
public ActionResult Multiple(int[] ids)
{
...
}
И если вы хотите, чтобы это работало со значениями, разделенными запятыми, вы можете написать пользовательское связующее звено модели:
public class IntArrayModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (value == null || string.IsNullOrEmpty(value.AttemptedValue))
{
return null;
}
return value
.AttemptedValue
.Split(',')
.Select(int.Parse)
.ToArray();
}
}
и затем вы можете применить эту модель связывания к конкретному аргументу действия:
public ActionResult Multiple([ModelBinder(typeof(IntArrayModelBinder))] int[] ids)
{
...
}
или примените его глобально ко всем параметрам целочисленного массива в Application_Start
в Global.asax
:
ModelBinders.Binders.Add(typeof(int[]), new IntArrayModelBinder());
и теперь действие вашего контроллера может выглядеть так:
public ActionResult Multiple(int[] ids)
{
...
}