我很难使用以下签名将 ajax 调用中的一些数据绑定到我的 MVC 控制器方法:
public ActionResult AutocompleteHandler([FromUri]Part[] parts, string lastKeyPressed, string term)
public class Part
{
public string hasType { get; set; }
public string hasLabel { get; set; }
public int hasIndex { get; set; }
}
以下 ajax 调用无法将属性(hasLabel、hasType、hasIndex)绑定到Part
对象上。
$("#autocomplete").autocomplete({
source: function( request, response) {
$.ajax({
url: "Controller/AutocompleteHandler",
data: $.param({
parts: [{ hasLabel: "label", hasType: "type", hasIndex: 0 }],
lastKeyPressed : "S",
term : "term"
}),
dataType: "json"
});
},
数组中的项目数正确绑定(因此parts
在此示例中将正确地有一个项目)但是尽管我传递了值,但该项目的所有属性都是默认值。
我觉得我以前做过几次都没有问题,所以我对此感到困惑。
编辑:
请求网址是:
`?parts%5B0%5D%5BhasLabel%5D=label&parts%5B0%5D%5BhasType%5D=type&parts%5B0%5D%5BhasIndex%5D=0&lastKeyPressed=S&term=S`
如果我传递给decodeUri()
的是:
`?parts[0][hasLabel]=label&parts[0][hasType]=type&parts[0][hasIndex]=0&lastKeyPressed=S&term=S
更新:
事实证明,这仅适用于ApiController
带有 MVC Web Api 而不是普通 MVC。
我将接受在普通 MVC 中显示等效内容的答案,因为我不想发送带有违反 HTTP 协议的正文的 GET。