我需要将包含数组的对象数组从 javascript 传递到 MVC actionresult 方法。基本上我有一个 KeyValuePair,它的键是一个字符串数组,我需要传回这些 KeyValuePairs 的列表。在代码中,我有一个已更改的键列表,以及一个包含键-> 值对的 JS 对象。我尝试传回的 javascript 对象应该与我的类具有相同的格式。我也试过对其进行 JSONing,但没有成功。
谢谢。
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
我尝试在 fiddler 中尝试并更改请求数据格式(使用 .Key[x]、.Value),但没有任何效果。
谢谢!
最佳答案
格式应该是这样的:
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 Wire Format for Model Binding to Arrays, Lists, Collections, Dictionaries了解详情。
关于c# - MVC3 传回带有列表的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12355165/