0

この質問は、これに関連しています

次を使用して、ページの選択要素から属性と値を抽出しています。

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

それは間違っているようです。FactsheetPanelとクラスも投稿すると役に立ちましSiteたが、とにかく、私が理解している限り、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 に答える