Пользовательские объекты передачи данных C # из JavaScript PageMethods - PullRequest
6 голосов
/ 20 января 2009

Я создал пользовательский объект, который я хотел бы вернуть в JSON методу javascript. Этот объект был создан как класс в C #.

Каков наилучший способ вернуть этот объект из PageMethod (если хотите, [WebMethod]) в функцию javascript onPageMethodCallback ()? Мне нужно иметь доступ к свойствам этого объекта через javascript и обновлять DOM согласно (возможно, используя jQuery).

Спасибо, StackOverflow! :)

Ответы [ 2 ]

12 голосов
/ 21 января 2009

ASP.NET AJAX на стороне сервера будет обрабатывать сериализацию объекта для вас. Например:

public class Name
{
  public string FirstName;
  public string LastName;
}

[WebMethod]
public Name GetName()
{
  Name name = new Name();

  name.FirstName = "Dave";
  name.LastName = "Ward";

  return name;
}

Затем вы можете вызывать PageMethod напрямую из jQuery, используя в основном тот же метод, с которым связан JD. Более конкретно, вот пост о вызове PageMethods с помощью jQuery .

Сервер сериализует ваш возвращаемый тип как JSON, и вы сможете получить доступ к свойствам класса Name, как и ожидалось. В этом примере msg.d.FirstName и msg.d.LastName .

Просто следите за .d. Эта функция безопасности добавлена ​​в 3.5 и отсутствует в 2.0.

3 голосов
/ 20 января 2009

Вот довольно обширный пост на тему использования сериализованных JSON WebMethods из asmx с jQuery. Это должно сработать.

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

Если вы хотите использовать ASP.NET AJAX вместо jQuery для выполнения бита AJAX, вам следует взглянуть на ScriptManager и ServiceReference, которые создают для вас прокси javascript. Это действительно мощный инструмент, и мы успешно используем его в некоторых довольно крупных приложениях. Нашел эту статью:

http://dotnetslackers.com/articles/ajax/JSON-EnabledWCFServicesInASPNET35.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...