2010-10-07 7 views
1

Je crée un service Web en asp.net 2.0 avec C# et une méthode Web qui ressemble à ceci:la création d'un service Web avec radiomessagerie

[WebMethod()] 
    public List<Comment> GetYourSayComments(int pageNumber, int pageSize, int commentTopicId) 
    { 
     CommentManager cm = new CommentManager(); 
     return cm.GetYourSayComments(pageNumber, pageSize, commentTopicId, true); 

    } 

Ce travaillait greate pour les services qui viennent de rentrer tous entités, cette méthode renvoie cependant des résultats paginés. Quel est le meilleur moyen de renvoyer le nombre total de lignes au client?

Répondre

2

Vous devez créer un type personnalisé pour inclure le nombre:

public class EnvelopeWithCount<T> 
{ 
    public T Value { get; set; } 
    public int RowCount { get; set; } 
} 

Et puis votre service Web retournerait le nouveau type:

[WebMethod] 
public EnvelopeWithCount<List<Comment>> GetYourSayComments(int pageNumber, 
                  int pageSize, 
                  int commentTopicId) 
{ 
    CommentManager cm = new CommentManager(); 
    Envelope<List<Comment>> retrunVal = new Envelope<List<Comment>>(); 
    returnVal.Value = cm.GetYourSayComments(pageNumber, 
              pageSize, 
              commentTopicId, 
              true); 
    // Get the count of all rows however you need 
    returnVal.RowCount = cm.GetYourSayComments(true).Count(); 

    return returnVal; 
} 
+0

Do services Web prennent en charge ce type de retour générique tapez .NET 2.0? –

+1

@John - Si ce n'était pas le cas, la valeur de retour d'origine n'aurait pas fonctionné non plus. –

+0

merci, pensé c'est ce que je devrais faire, mais j'espérais que je pourrais juste faire un attribut dans le xml – aaron