3

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

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

或类似的简短内容。有什么我可以用的吗?

4

1 回答 1

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)
于 2013-07-18T16:08:56.193 回答