1

配列を含むオブジェクトの配列を JavaScript から MVC の actionresult メソッドに渡す必要があります。基本的に、キーが文字列の配列である KeyValuePair があり、これらの KeyValuePair のリストを返す必要があります。コードには、変更したキーのリストと、キーと値のペアを保持する JS オブジェクトがあります。返そうとする JavaScript オブジェクトは、クラスと同じ形式である必要があります。私もそれをJSON化しようとしましたが、うまくいきませんでした。

ありがとう。

public class ChangedItem
{
    public IEnumerable<string> Key { get; set; }
    public int Value { get; set; }

    public ChangedItem()
    {
    }

    public ChangedItem(IEnumerable<string> key, int value)
    {
        Key = key;
        Value = value;
    }
}

[HttpPost]
public ActionResult UpdateResults(IEnumerable<ChangedItem> changedItems)
{
    return RedirectToAction("Index");
}

function getChangedItems() {
    var ChangedItems = new Array();
    for (var i = 0; i < _ChangedItemKeys.length; i++) {
        var ChangedItem = {};
        ChangedItem.Key = _ChangedItemKeys[i];
        ChangedItem.Value = _ChangedItems[_ChangedItemKeys[i]];
        ChangedItems[i] = ChangedItem;
    }
    return ChangedItems;
}

function submitNewVals() {
    $.ajax({
        url: '/Home/UpdateResults',
        type: 'POST',
        dataType: 'json',
        data:
        {
            changedItems: getChangedItems()
        }
    });
}

リクエスト データの詳細を以下に示します。アクションの結果に 6 つのアイテムが表示されます。これらの各アイテム内のキーは null で、値は 0 です。

changedItems[0][Key][]:BoxeR
changedItems[0][Key][]:Proleague
changedItems[0][Key][]:Total
changedItems[0][Key][]:2005
changedItems[0][Key][]:Quarter 2
changedItems[0][Key][]:Actual
changedItems[0][Value]:123
changedItems[1][Key][]:BoxeR
changedItems[1][Key][]:Proleague
changedItems[1][Key][]:Team
changedItems[1][Key][]:2005
changedItems[1][Key][]:Quarter 1
changedItems[1][Key][]:Actual
changedItems[1][Value]:123
changedItems[2][Key][]:BoxeR
changedItems[2][Key][]:Proleague
changedItems[2][Key][]:Team
changedItems[2][Key][]:2005
changedItems[2][Key][]:Quarter 1
changedItems[2][Key][]:Estimate
changedItems[2][Value]:123
changedItems[3][Key][]:BoxeR
changedItems[3][Key][]:Proleague
changedItems[3][Key][]:Team
changedItems[3][Key][]:2005
changedItems[3][Key][]:Quarter 2
changedItems[3][Key][]:Actual
changedItems[3][Value]:123
changedItems[4][Key][]:BoxeR
changedItems[4][Key][]:Proleague
changedItems[4][Key][]:Team
changedItems[4][Key][]:2005
changedItems[4][Key][]:Quarter 2
changedItems[4][Key][]:Estimate
changedItems[4][Value]:123

フィドラーで遊んで、要求データ形式を変更しようとしましたが (.Key[x]、.Value を使用)、何も機能しませんでした。

ありがとう!

4

2 に答える 2

1

申し訳ありませんが、戻りデータ型はjsonであり、配列を渡すと、コード戻り型を変更してくださいJsonResult

return Json(ChangedItems, JsonRequestBehavior.AllowGet);

このリンクを参照してください

于 2012-09-10T15:54:06.740 に答える
1

フォーマットは次のようになります。

changedItems[0].Key[0]=BoxeR
changedItems[0].Key[1]=Proleague
changedItems[0].Key[2]=Total
changedItems[0].Key[3]=2005
changedItems[0].Key[4]=Quarter 2
changedItems[0].Key[5]=Actual
changedItems[0].Value=123
...

詳細については、配列、リスト、コレクション、辞書へのモデル バインディングの ASP.NET ワイヤ フォーマットを参照してください。

于 2012-09-10T16:03:24.827 に答える