Jquery 当我通过$.get()传递JSON时,模型绑定失败

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

这一问题与国际法有关

我使用以下方法从页面上的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 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" }
           };