asp.net在Page_Load中返回数据

时间:2012-12-01 13:12:25

标签: asp.net webforms

如果我的页面请求中存在查询字符串参数,我想在Page_Load中查询服务器上的数据库,然后将结果返回给客户端。我可以执行查询字符串参数检查和查询数据库,但如何将数据返回到页面,在javascript方面如何访问该数据?

理想情况下,我会返回一个对象结构的JSON,它会返回一个数组。

1 个答案:

答案 0 :(得分:2)

是的,返回JSON将是最佳选择。我不确定你如何查询你的数据库(你使用LINQ或ADO.NET DataTables等)

如果您没有要发送的类型的自定义对象,我建议您创建一个。然后你应该得到它们的数组。

示例:

public class Person {
   string Name { get; set; }
   int Age { get; set; }
}

Person[] pArr = new Person[5];

然后你可以使用像this这样的第三方库来用JSON创建该数组的字符串表示。

string json = JsonConvert.SerializeObject(product);

然后将json字符串写入Response对象,以便通过覆盖页面的Render方法将其发送到客户端。

// Don't expect this code to work as it is, but take this as a guidance
Response.Clear();
Response.Write(json);
Response.Close();

在客户端使用jQuery库向页面发送请求,并为您处理JSON响应。

$.getJSON('url', function(data) {
  //process data
});

如果您不想对此使用AJAX请求,我的建议如下:

像在page_load中一样使用对象,并将其转换为JSON字符串,如上所述。

然后使用ClientScriptManager在加载时在客户端创建JavaScript变量。

ClientScript.RegisterClientScriptBlock(typeof(Page), "unique_key", "var myObjectList = " + json, true);

在页面加载之后,您将拥有一个名为“myObjectList”的变量,其中包含对象列表,而无需进行不同的AJAX调用。

您可以直接在javascript中引用该变量并进行必要的处理。

希望这有帮助。