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

ASP.NET AJAX:如何限制传输到客户端的属性数量,asp.net,web-services,asp.net-ajax,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; } 是否有可能限制归还财产的数量?

我的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;
}
是否有可能限制归还财产的数量?或者我应该创建一个仅具有必需属性的单独类(UserForClientForSpecial)

谢谢


顺便说一句,我的最后一个想法将是建议的答案:),但无论如何,任何想法都是受欢迎的

您应该始终非常清楚您在API中公开了哪些数据,特别是如果这些数据有可能被外部方使用,但即使它们仅在内部使用。我肯定会推荐你在文章中提到的内容,并创建一个只公开这种情况下必要的数据的结构


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

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

允许使用匿名类型并返回“object”。那是个好主意。谢谢