2009-03-09 4 views
0

J'utilise les méthodes de page ASP.Net Ajax et le problème est que la définition d'une énumération n'est pas affichée. Voici ce que j'ai:Les définitions d'objet ne sont pas affichées pour les méthodes de page ASP.Net

public class Contact 
{ 
    public string FirstName{get;set;} 
    public IList<PhoneNumber> PhoneNumbers{get;set;} 
} 

public class PhoneNumber 
{ 
    public string Number{get;set;} 
    public PhoneNumberType {get;set;} 
} 

public enum PhoneNumberType 
{ 
    Home, 
    Work, 
    Fax, 
    Cell 
} 

J'ai ensuite une méthode web simple comme:

[WebMethod] 
public static Contact GetContact(Guid id) 
{ 
    return ....; 
} 

Du côté client je me retrouve avec une classe MyNamespace.Contact; cependant, je n'ai pas de MyNamespace.PhoneNumber ou MyNameSpace.PhoneNumberType. J'ai trouvé que si j'ajoute explicitement de fausses webmethods qui retournent juste ces types alors les types côté client sont rendus. Existe-t-il un moyen de forcer cette énumération à rendre d'autres méthodes que de fausses web?

Je veux l'énumération parce que j'ai besoin de parcourir cette liste <> et basé sur le PhoneNumberType faire quelque chose de différent. Je préfère ne pas coder en dur les nombres magiques ou coder en dur la deffinition enum.

Répondre

0

J'ai besoin d'ajouter l'attribut GenerateScriptType à la signature de la méthode.

donc ma méthode de page est maintenant

[WebMethod] 
[GenerateScriptType(typeof(PhoneNumberType))] 
[GenerateScriptType(typeof(PhoneNumber))] 
public static Contact GetContact(Guid id) 
{ 
} 
Questions connexes