我想将uri中带有嵌套数组的复杂对象发送到 GET 请求中的 MVC 操作方法。
考虑以下代码:
public ActionResult AutoCompleteHandler([FromUri]PartsQuery partsQuery){ ... }
public class PartsQuery
{
public Part[] Parts {get; set; }
public string LastKey { get; set; }
public string Term { get; set; }
}
$.ajax({
url: "Controller/AutoCompleteHandler",
data: $.param({
Parts: [{ hasLabel: "label", hasType: "type", hasIndex : 1 }],
LastKey : "Last Key",
Term : "Term"
}),
dataType: "json",
success: function(jsonData) { ... }
});
这工作得很好,并且使用MVC Web Api 中的默认模型绑定器正确绑定。
但是,将其切换到普通 MVC 而不是 WebApi,默认模型绑定器会发生故障,并且无法绑定嵌套数组中对象的属性:
观察名单
partsQuery != null //Good
--LastKey == "Last Key" //Good
--Term == "Term" //Good
--Parts[] != null //Good
----hasLabel == null //Failed to bind
----hasType == null //Failed to bind
----hasIndex == 0 //Failed to bind
我想知道为什么这在纯 MVC 中会发生故障以及如何FromUriAttribute
在纯 MVC 中正确绑定此对象