デフォルトのモデルバインダーは、次のURLを想定しています。
http:
正常にバインドするには:
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
in Global.asax
:内のすべての整数配列パラメータにグローバルに適用します。
ModelBinders.Binders.Add(typeof(int[]), new IntArrayModelBinder());
これで、コントローラーのアクションは次のようになります。
public ActionResult Multiple(int[] ids)
{
...
}
[FromUri]
。public ActionResult Multiple([FromUri]int[] ids) {}
(GET)