Javascript 带有字典参数的Jquery发布到操作
我感到很沮丧,但我找不到答案: 我有一个对象数组,在检查jQ$时需要如下所示。post调用:Javascript 带有字典参数的Jquery发布到操作,javascript,jquery,asp.net-mvc,asp.net-mvc-2,automapping,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 2,Automapping,我感到很沮丧,但我找不到答案: 我有一个对象数组,在检查jQ$时需要如下所示。post调用: limiter[0].Key limiter[0].Value 以便在动作中映射它 public ActionResult SomeAction(Dictionary<Guid, string> dictionary) { } 在firebug中检查时会产生以下结果: limiter[0][Key] = someKey // Guid Value limiter[0][Value] =
limiter[0].Key
limiter[0].Value
以便在动作中映射它
public ActionResult SomeAction(Dictionary<Guid, string> dictionary) { }
在firebug中检查时会产生以下结果:
limiter[0][Key] = someKey // Guid Value
limiter[0][Value] = someValue
这在JQ1.4.2中。我似乎还记得一些需要设置的标志,以便在jQ中以不同的方式呈现json。这有什么意义吗?你可以使用这个标志-
jQuery.ajaxSetting.traditional = true;
让jQuery以不同于您看到的格式发布数据。有关更多信息,请参见此问题-
您将看到post参数为
limiter[0][Key]
,因为jquery在发布json数据之前会序列化它。控制器操作很好地解释了这一点,您可以在操作中获得所需的输入。尝试以下操作:
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)
{
...
}
public ActionResult SomeAction(字典、字符串或其他PostData)
{
...
}
您还可以使用对象列表,结果将与您想要的相同。这是一个很好的例子
var dict={}
dict[“key1”]=1
dict[“key2”]=2
dict[“key3”]=3
$.ajax({
类型:“POST”,
url:“/File/Import”,
资料来源:dict,
数据类型:“json”
});
公共无效导入(字典dict dict)
{
}
只需将obj作为数据类型发送:“json”不幸的是,
传统标志
没有帮助。使用它时,在FireBug中查看时发布[Object:Object]
,我之所以发布它是因为它没有被映射,但我将更新我的代码以获得更完整的信息,以查看是否有人可以帮助您忘记参数名称,应该是dictionary[0]。键,但这对我有效。我仍然不明白为什么另一种方法不行,但是谢谢你的帮助。谢谢!效果很好。如果您事先不知道有多少个条目-param['['+count+'].Key']=loopObj.GUID代码>param['+(count++)+'].Value']=loopObj.Value代码>
public ActionResult SomeAction(Dictionary<Guid, string> dictionary, string otherPostData)
{
...
}
var dict = {}
dict["key1"] = 1
dict["key2"] = 2
dict["key3"] = 3
$.ajax({
type: "POST",
url: "/File/Import",
data: dict,
dataType: "json"
});
public void Import(Dictionary<string, int?> dict)
{
}