Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有字典参数的Jquery发布到操作_Javascript_Jquery_Asp.net Mvc_Asp.net Mvc 2_Automapping - Fatal编程技术网

Javascript 带有字典参数的Jquery发布到操作

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] =

我感到很沮丧,但我找不到答案: 我有一个对象数组,在检查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] = 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)
{
}