0

这个问题与this有关。

我正在使用以下内容从页面上的选择元素中提取属性和值:

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..
}

有人能看出这有什么明显的错误吗?

4

2 回答 2

1

那看起来不对。如果您还发布了您的FactsheetPanelSite类,那将会有所帮助,但无论如何,据我了解,这是从 HTML 元素获取值并处理它们之后您的 JSON 应该如何。

{"site.siteId":"2", "panel.filterId":"2","panel.factSheetPanelId":"2"}
于 2010-03-04T12:44:04.370 回答
0

不要传递 JSON。jQuery 将简单地将它传递给服务器,除非您编写 JSON 数据绑定器,否则它不会知道如何处理它。

相反,传递一个 JavaScript 对象。jQuery 会将其序列化为可以正常工作的查询字符串参数。例如:

var data = {
               panel: { filterId: "2", factSheetPanelId: "2" },
               site: { siteId: "2" }
           };
于 2010-03-04T13:51:47.983 回答