【发布时间】:2012-03-05 19:20:03
【问题描述】:
我正在尝试使用 jquery 1.7.1 和 json2.js 在 aspx 页面 (asp.net 4.0) 中将复杂对象发送到我的 WebMethod
我所做的是将多个参数发送到同一页面上的 web 方法,现在我想将这些参数包装在一个对象中。
所以我的 WebMethod 看起来像这样:
[WebMethod]
public static string ValidateControlInput(PairValue pair)
{
var result = pair;
return String.Format("Valid");
}
我的 javascript 方法如下所示:
$(document).ready(ValidateInput);
function ValidatePairInput(codeId, descriptionId, labelId) {
var pair = CreatePairObject(codeId, descriptionId);
SendDataToValidate(pair, labelId);
}
function SendDataToValidate(dataToValidate, controlId) {
$.ajax({
type: 'POST',
url: 'NewDocument.aspx/ValidateControlInput',
contentType: 'application/json; charset=utf-8',
data: dataToValidate,
dataType: 'json',
success: function (data, textStatus) {
var result = data.d;
DisplayValidationMessage(controlId, result);
}
});
}
function DisplayValidationMessage(controlId, result) {
$('#' + controlId).text(result);
}
function CreatePairObject(codeId, descriptionId) {
var pair = { };
pair.Code = $('#' + codeId).val();
pair.Description = $('#' + descriptionId).val();
var DTO = { 'pair': pair };
return JSON.stringify(DTO);
}
很遗憾,这行不通。我在 web 方法中设置了一个断点,但从未命中。
如果我将 javascript 方法“CreatePairObject”中的代码替换为:
function CreatePairObject(codeId, descriptionId) {
return JSON.stringify({ code: $('#' + codeId).val(), description: $('#' + descriptionId).val() });
}
以及带有此功能的网络方法:
[WebMethod]
public static string ValidateControlInput(string code, string description)
{
return String.Format("Valid");
}
它就像一个魅力。那么有人可以帮我解决这个问题吗?非常感谢任何帮助!
【问题讨论】:
标签: jquery asp.net ajax webmethod