我正在使用ASP.Net和jquery / ajax
我在jquery中有以下脚本:
var sizes = [];
sizes.push({ key: "1", value: "3"});
$.ajax({
type: "POST",
url: pageUrl,
data: '{"sizeList":' + sizes + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert("success");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus); alert("Error: " + errorThrown);
}
}
这是代码隐藏:
public static void AddProductToDB(Dictionary<String, String> sizeList)
有人可以告诉我我做错了什么,因为我已经尝试了我能想到的一切。 感谢
答案 0 :(得分:2)
var param = {
'[0].Key': '1',
'[0].Value': '3'
};
$.ajax({
type: "POST",
url: pageUrl,
data: param
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert("success");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus); alert("Error: " + errorThrown);
}
}
答案 1 :(得分:1)
看起来您正在尝试使用页面方法。如果是这样,您需要使用WebMethod属性
修饰您的方法(在代码后面)[WebMethod]
public static void AddProductToDb(Dictionary <string, string> sizelist){}
然后确保使用jquery将json对象发布到正确的URL ...例如... PageName.aspx / AddProductToDb
如果您使用页面方法,那就是您所需要的一切
答案 2 :(得分:0)
我在发布这两年后正在关注它,但希望如果他们偶然发现这篇帖子会对他有所帮助。我用Damith的答案来形成我要传递的参数,并通过以下方式传递它来使它工作:
var param = {
'filters[0].Key': '1',
'filters[0].Value': 'test',
'filters[1].Key': '2',
'filters[1].Value': 'test',
id: 1,
width: 150,
height: 150,
};
然后在MVC代码上,我的方法有以下签名:
public async Task<ActionResult> IndexPartial(int id = -1, int? width = null, int? height = null, Dictionary<string, string> filters = null)
通过这两件事,我能够让方法检测到作为Dictionary<string,string>
传递的信息,同时我能够传递其他参数。希望这能解决您的问题。
答案 3 :(得分:0)
我相信你需要将传统设置为true才能正确序列化
$.ajax({
type: "POST",
url: pageUrl,
traditional: true,
data: '{"sizeList":' + sizes + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert("success");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus); alert("Error: " + errorThrown);
}
}
答案 4 :(得分:0)
请参考以下代码。确保您的方法“ AddProductToDB” 具有 HttpPost 属性和在这种情况下参数相同/相同的名称“ sizeList” 。
C#/ MVC /后端:
[{"TourDate": "23.01", "Nights": "7", "City": "\u0428\u0430\u0440\u043c-\u044d\u043b\u044c-\u0428\u0435\u0439\u0445", "Hotel": "ALBATROS AQUA BLU RESORT SHARM EL SHEIKH 4+ *", "Board": "AI", "Accomodation": "1 (18+)", "Price": "836", "Month": "01"}]
Javascript / jQuery /客户端:
然后输入 URL ,您可以在其中使用此功能/方法AddProductToDB。
例如“ YourController / AddProductToDB”。
[HttpPost]
public static void AddProductToDB(Dictionary<String, String> sizeList)
{
//Business logic or Data
}