Получение пользовательского определения aoColumns с сервера - PullRequest
2 голосов
/ 17 июня 2011

Я пытаюсь определить aoColumns, используя ajax и веб-метод C #. Я отношусь к этому очень похоже на то, как я передаю данные на стороне сервера, используя структуру данных List>, к которой я добавляю строки List. Моя проблема в том, что это приводит к строке вроде:

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

Это почти правильно, за исключением того, что в определениях столбцов вместо {} используются квадратные скобки. Как мне создать правильный текст JSON? Любая помощь с благодарностью!

1 Ответ

1 голос
/ 02 июля 2011

Я предполагаю, что вы используете таблицы данных из http://www.datatables.net/. Пожалуйста, исправьте меня, если я ошибаюсь.

Я не уверен, что понимаю, возникли ли у вас проблемы с созданием строки JSON для возврата к вызову AJAX или преобразованием ее во что-то, пригодное для использования на стороне сервера.

Если вы собираетесь создать строку 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.

...