如何将参数从JQuery传递到ASP.NET webmethod?

时间:2015-01-03 18:17:44

标签: jquery asp.net ajax web-services webmethod

我在下面编写了这个jQuery ajax方法,它调用了webmethod。调用很好,除了参数是User对象有空字段。我在调试时可以看到firebug中的值,但是它们没有通过webmethod中的User对象参数

我试图从我的jQuery方法传递给Web方法的两个值是“UserID”(Guid)和“About”(字符串),它们都是User类的属性,但在服务端, User对象只是空的。请帮我识别我错过的一切。谢谢...见下面的代码。

JQuery的

function updatePersonalProfile(userId) {
var user = {};
user.UserID = userId;
var updatedPersonalProfile = $(".txtPersonalProfile").html();
user.About = updatedPersonalProfile;
$.ajax({
    type: "POST",
    url: "PresentationService.asmx/updateUserPersonalProfile",
    dataType: "json",
    data: "{user:" + JSON.stringify(user) + "}",
    contentType: "application/json; charset=utf-8",
    success: function(response) {
    },
    error: function(response) {
        alert(response.d);
    }
});
}

WEBMETHOD

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public void UpdateUserPersonalProfile(User user)
    {
        if (null == portfolioService)
        {
            portfolioService = new PortfolioService();
        }
        portfolioService.updateUserPersonalProfile(user);
    }

2 个答案:

答案 0 :(得分:0)

我认为您在定义数据时缺少用户的单引号。请使用以下代码更改数据行:

data: "{'user':" + JSON.stringify(user) + "}",

答案 1 :(得分:0)

所以我想到了我做错了什么,这两个字段在Domain对象中都有私有的setter。因此jQuery无法设置属性。

感谢所有