ASP.NET AJAX:如何限制传输到客户端的属性数量

时间:2010-12-15 02:50:42

标签: asp.net web-services asp.net-ajax

我的web方法返回具有很多属性的对象'User':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)?

感谢。

P.S。猜猜,我的最后一个想法将是建议的答案:),但无论如何,欢迎任何想法

2 个答案:

答案 0 :(得分:1)

您应该始终非常了解您在API中公开的数据,特别是如果它们有可能被外部方使用,但即使它们仅在内部使用。我肯定会建议您在帖子中提到的内容,并创建一个旨在仅公开此上下文中必需的数据的构造。

更新:还建议您查看codeplex上的AutoMapper项目,该项目处理自动将属性值从一个对象(User)映射到另一个对象(UserSummary)。

答案 1 :(得分:1)

使用数据传输对象是个好主意,专门用于公开客户端应该知道的属性。或者,如果您是原型,匆忙,或者由于其他原因不想创建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 };
}