将整数数组传递给Get / ASP.NET Web API

时间:2013-07-18 15:36:33

标签: asp.net asp.net-mvc asp.net-mvc-4

我知道如何将数组传递给Get函数:/?index=1&index=5&index=3

但我需要能够接收这样的数组:/?index=[1,5,3]

或类似的东西短。有什么我可以用的吗?

1 个答案:

答案 0 :(得分:2)

使用自定义ModelBinder

public class JsArrayStyleModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);

        if (value == null)
            return null;

        return new JavaScriptSerializer().Deserialize<string[]>(value.AttemptedValue);
    }
}

然后在Global.asax

中注册
ModelBinders.Binders.Add(typeof(string[]), new JsArrayStyleModelBinder());

或直接在Action参数:

[HttpGet]
public ActionResult Show([ModelBinder(typeof(JsArrayStyleModelBinder))] string[] indexes)