我需要将一个 JS 对象传递给我的控制器方法 jqGrid。该对象称为“activeFilters” - 这是表示为 JSON 的对象:
{"family":
[{
"filterDisplayName":"Performance Status",
"filterDbName":"CurrentStatus",
"filterValueList":"On Plan"
}]
}
将上述内容传递给我的 jqGrid 时遇到问题(详细信息进一步向下)。但是我可以非常简单地将对象传递给带有 Ajax 的控制器:
$.ajax({
url: myMethodPath,
type: 'POST',
dataType: 'html',
data: JSON.stringify(activeFilters),
contentType: 'application/json; charset=utf-8',
success: function (result) {
alert("success")
},
error: function () {
alert("Error:");
}
});
我的测试控制器方法如下所示:
[HttpPost]
public ActionResult DataTest(JsonFilterFamily activeFilters)
{
return PartialView();
}
添加 JsonFilterFamily 的结构如下:
public class JsonFilterFamily
{
public List<FilterFamilyMember> family { get; set; }
}
public class FilterFamilyMember
{
public string filterDisplayName { get; set; }
public string filterDbName { get; set; }
public string filterValueList { get; set; }
}
使用上面的 Ajax,JS 对象可以毫无问题地发送到控制器。但我只是不知道如何在对 jqGrid 控制器的调用中发送与 postData 相同的 JS 对象。发布数据的语法一定是错误的。这是我正在使用的:
$("#myJqGrid").setGridParam({ postData: { family: activeFilters.family} }).trigger("reloadGrid");
但是当控制器触发时,会发生一些奇怪的事情。调试器告诉我family
= 1; 但 filterDisplayName、filterDbName、filterValueList 为空。关于什么是错的任何想法?