我感觉dejavu,但我找不到答案: 在检查jQ $ .post调用时,我有一个对象数组需要看起来像这样:
limiter[0].Key
limiter[0].Value
以便在行动中映射
public ActionResult SomeAction(Dictionary<Guid, string> dictionary) { }
然而,这个javascript:
// Some Guid and Some Value
var param = [ { 'Key' : '00000000-0000-00000-000000', 'Value': 'someValue' } ];
$.post('/SomeController/SomeAction/',
{
dictionary: limiter,
otherPostData: data
},
function(data) {
callback(data);
}
)
在用firebug检查时产生这个:
limiter[0][Key] = someKey // Guid Value
limiter[0][Value] = someValue
这是在jq 1.4.2中。我似乎记得你需要设置一些标志来在jQ中以不同的方式渲染json。这会响铃吗?
答案 0 :(得分:5)
试试这样:
var param = {
'[0].Key': '28fff84a-76ad-4bf6-bc6d-aea4a30869b1',
'[0].Value': 'someValue 1',
'[1].Key': 'd29fdac3-5879-439d-80a8-10fe4bb97b18',
'[1].Value': 'someValue 2',
'otherPostData': 'some other data'
};
$.ajax({
url: '/Home/SomeAction/',
type: 'POST',
data: param,
success: function (data) {
alert(data);
}
});
应映射到以下控制器操作:
public ActionResult SomeAction(Dictionary<Guid, string> dictionary, string otherPostData)
{
...
}
答案 1 :(得分:3)
TRUE
只需将您的obj作为dataType发送:&#34; json&#34;
答案 2 :(得分:1)
您可以使用此标志 -
jQuery.ajaxSetting.traditional = true;
让jQuery以不同的格式将数据发布到您正在看到的格式。有关详细信息,请参阅此问题 -
答案 3 :(得分:0)
您会看到post param为limiter[0][Key]
,因为jquery会在发布之前序列化json数据。这可以通过控制器操作很好地解释,并且您可以在操作中获得所需的输入。
答案 4 :(得分:0)
您还可以使用对象列表,结果将与您想要的结果相同。这是一个很好的例子。