我知道如何将数组传递给 Get 函数,如下所示:/?index=1&index=5&index=3
但我需要能够接收这样的数组:/?index=[1,5,3]
或类似的简短内容。有什么我可以用的吗?
我知道如何将数组传递给 Get 函数,如下所示:/?index=1&index=5&index=3
但我需要能够接收这样的数组:/?index=[1,5,3]
或类似的简短内容。有什么我可以用的吗?
使用自定义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)