![](/img/trans.png)
[英]How can send List<> Model From View To Controller using Ajax Jquery in Mvc3 asp.net?
[英]ASP.NET MVC3 can't parse URL parameter of a list type sent by jQuery $.ajax()
jQuery $ .ajax()将URL参数值列表发送为“params [] = .....”
ASP.NET MVC 3无法在控制器的操作中解析这些参数,因为它们以“params []”名称传递
此类参数的示例为“目标%5b%5d = 486F6D655C486F6D655C50656E6775696E732E6A7067”
我能够将“traditional:true”添加到我自己的$ .ajax()调用中,但现在来自外部插件的ajax调用我无法更改。
有没有办法让ASP.NET MVC3理解发送值列表的“非传统”URL参数?
更新:我还发现了另一个全局jQuery属性“jQuery.ajaxSettings.traditional = true;” 也会尝试。
你可以写一个自定义模型绑定器:
public class MyModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var values = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + "[]");
if (values != null)
{
return values.RawValue;
}
return base.BindModel(controllerContext, bindingContext);
}
}
接着:
public ActionResult Index([ModelBinder(typeof(MyModelBinder))]string[] targets)
{
...
}
或者,如果要将模型绑定应用于所有字符串数组操作参数,请在Application_Start中全局注册模型绑定器:
ModelBinders.Binders.Add(typeof(string[]), new MyModelBinder());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.