我需要将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为null。关于什么是错的任何想法?
答案 0 :(得分:1)
在你的控制器方法中,尝试输入:
var filterFamilyMember = new FilterFamilyMember();
TryUpdateModel(filterFamilyMember);
TryUpdateModel
是一个MVC控制器方法,它会将数据放在您的对象中。