Jquery 当我通过$.get()传递JSON时,模型绑定失败
这一问题与国际法有关 我使用以下方法从页面上的select元素中提取属性和值:Jquery 当我通过$.get()传递JSON时,模型绑定失败,jquery,asp.net-mvc,model-binding,Jquery,Asp.net Mvc,Model Binding,这一问题与国际法有关 我使用以下方法从页面上的select元素中提取属性和值: var valuesArray = $("select").map(function() { return $.getAttributes($(this).find(":selected")); }); var arr = new Array(); $.each(valuesArray, function() { arr.push($(this)[0]); // this filters out t
var valuesArray = $("select").map(function()
{
return $.getAttributes($(this).find(":selected"));
});
var arr = new Array();
$.each(valuesArray, function()
{
arr.push($(this)[0]); // this filters out things like 'length'
});
基本上,在获得表示选择框属性的对象数组后,我希望将其转换为可以传递给服务器的数据字符串
// get data string for server
var data = $.toJSON(arr);
返回的JSON为:
[{"siteId":"2"},{"filterId":"2","factSheetPanelId":"2"}]
然后我将其传递给服务器,如下所示:
$.get(url, data, function(result)
{
// do stuff
}, "html");
服务器上的代码是错误的,但它没有拾取值&模型绑定失败
public PartialViewResult PanelList(FactsheetPanel panel, Site site)
{
// panel.FactsheetPanelId == 0. I would expect it to be 2
// same for site.SiteId..
}
有人能看出这有什么明显的错误吗?看起来不对。如果您还发布了
FactsheetPanel
和Site
类,这会有所帮助,但无论如何,据我所知,在从HTML元素获取值并处理它们之后,JSON应该是什么样子的
{"site.siteId":"2", "panel.filterId":"2","panel.factSheetPanelId":"2"}
不要传递JSON。jQuery只需将其传递给服务器,服务器不知道如何处理它,除非您编写JSON数据绑定器 而是传递一个JavaScript对象。jQuery将把它序列化为正确工作的查询字符串参数。例如:
var data = {
panel: { filterId: "2", factSheetPanelId: "2" },
site: { siteId: "2" }
};