从服务器获取自定义aoColumns定义

时间:2011-06-17 18:47:11

标签: c# jquery asp.net server-side jquery-datatables

我正在尝试使用ajax和C#webmethod定义aoColumns。我正在对待它与使用List>传递服务器端数据的方式非常类似。我添加List行的数据结构。我的问题是,这会产生如下字符串:

{\"aoColumns\":[[\"\\\"bVisible\\\": False\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"],[\"\\\"bVisible\\\": True\"]]}

这几乎是正确的,除了列定义使用方括号而不是{}。我将如何生成正确的JSON文本?非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我假设您正在使用http://www.datatables.net/中的数据表。如果我错了,请纠正我。

如果您在创建JSON字符串以返回AJAX调用或将其转换为服务器端可用的内容时,我不确定是否理解。

如果要在Web方法中创建JSON字符串,我建议使用Dictionary类型,因为它们非常接近JSON字符串。要将Dictionary类型转换为JSON字符串,请使用:

var dictionary = new Dictionary<string, string>()
// add values here...
return new JavaScriptSerializer().Serialize(dictionary);

如果要将JSON字符串转换为Dictionary对象,请使用:

var dictionary = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(jsonString);

我喜欢做的另一件事是将字典转换为数组,如果我要使用任何键或值,因为当你不知道你想要的确切键值时,从字典中获取它们会很麻烦与之合作。

作为参考,JavaScriptSerializer是System.Web.Script.Serialization.JavaScriptSerializer命名空间和System.Web.Extensions程序集中的一部分。