如何将JSON数据传递给代码隐藏方法(而不是Webmethod)?

时间:2014-09-30 05:47:31

标签: javascript c# asp.net json c#-4.0

我有JSON数据,我需要传递给后面的代码并绑定到obout网格。我知道我们可以使用<WebMethod>传递数据。但是在Webmethod中我无法将数据绑定到obout网格和任何网格。因为它是静态的webmethod。

所以现在我尝试从javascript调用代码隐藏方法并将数据作为参数传递给方法。我们怎么能这样做?

 users = [];
 for (var i = 0; i < usersInfo.length; i++) {
          user = {
                   UserName : usersInfo[i].UserName,
                   Email : usersInfo[i].Email,
                   Status : status
          };

          users.push(user);
    }
    var results = "";
    $('#lblError').val('');
    if (users.length > 0) {
        //Pass the `users` data to ShowResults code behind method.
     }

代码

public void ShowResults(List<UsersInfo> users)
{
       oboutGrid.DataSource = users;
       oboutGrid.DataBind();
}

public partial class UsersInfo
{
    public string UserName { get; set; }
    public string Email { get; set; }        
    public string Status { get; set; }
}

1 个答案:

答案 0 :(得分:0)

这样做的一种方法是在aspx表单中包含一个隐藏字段

<asp:HiddenField ID="jsonDataHolder" ClientIDMode="Static" runat="server"/>

在此隐藏字段中,使用JSON.stringify

将您的JSON数据添加为字符串
$('#jsonDataHolder').val(JSON.stringify({ id: 1, name: "mohamed" }));

然后当页面正常回发时,你可以访问隐藏的字段,去除它并执行你的代码

protected void btn_DOPostBack_Click(object sender, EventArgs e)
{
    string data = this.jsonDataHolder.Value;
    // desrialize json, do ur code
}