Question

J'utilise les méthodes de page d'ASP.Net Ajax et un problème est que la définition d'une énumération n'est pas rendue. Voici ce que j'ai:

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 alors une méthode Web simple telle que:

[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 constaté que si j'ajoute explicitement de fausses méthodes Web qui ne renvoient que ces types, les types côté client sont rendus. Existe-t-il un moyen de forcer cette énumération à être rendue autrement que par de fausses méthodes Web?

Je veux l'énum parce que je dois parcourir cette liste < > et basé sur le PhoneNumberType faire quelque chose de différent. Je préférerais ne pas coder en dur les nombres magiques ni coder en dur la déffinition de l'énum.

Était-ce utile?

La solution

Je dois 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)
{
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top