ASP.NET AJAX: как ограничить количество свойств, передаваемых клиенту - PullRequest
0 голосов
/ 15 декабря 2010

Мой веб-метод возвращает объект «Пользователь», который имеет много свойств: Id, Nick, Email, FirstName, SecondName и т. Д. *

[WebMethod]
public User GetUserById(int userId)
{
    vfm_elita.elita_table.user.User user =
        vfm_elita.elita_table.user.User.GetUserById(userId);
    return user;
}

Есть ли возможность ограничить количество свойстввернулся?Или я должен создать отдельный класс (UserForClientForParticular), который имеет только обязательные свойства?

Спасибо.

PS Думаю, моей последней идеей будет предложенный ответ :), но в любом случае, любые мыслиДобро пожаловать

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Хорошая идея - использовать объект передачи данных, специализированный для предоставления только тех свойств, о которых должна знать клиентская часть.В качестве альтернативы, если вы создаете прототип, спешите или не хотите создавать класс DTO по какой-либо другой причине, вы можете использовать анонимный тип, чтобы сократить ответ:

[WebMethod]
public object GetUserById(int userId)
{
  vfm_elita.elita_table.user.User user =
    vfm_elita.elita_table.user.User.GetUserById(userId);

  // Will return something like {"Nick":"Encosia","FirstName":"Dave"}
  return new { Nick = user.Nick, FirstName = user.FirstName };
}
1 голос
/ 15 декабря 2010

Вы всегда должны быть очень осведомлены о том, какие данные вы предоставляете в своих API, особенно если есть вероятность, что они будут использованы внешними сторонами, но даже если они используются только для внутреннего использования. Я определенно рекомендовал бы то, что вы упомянули в своем посте, и создал бы конструкцию, предназначенную для предоставления только данных, необходимых в этом контексте.

Обновление: также рекомендуем взглянуть на проект AutoMapper на codeplex, который обрабатывает автоматическое сопоставление значений свойств от одного объекта (пользователя) к другому объекту (UserSummary).

...