Définitions d'objet non rendues pour les méthodes de page ASP.Net
-
06-07-2019 - |
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.
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)
{
}