Domanda

Sto utilizzando ASP.Net Ajax's Page Methods e ho un problema per il quale la definizione di un elenco non viene visualizzata. Ecco quello che ho:

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
}

Ho quindi un semplice metodo web come:

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

Sul lato client finisco con una classe MyNamespace.Contact; tuttavia, non ho un MyNamespace.PhoneNumber o MyNameSpace.PhoneNumberType. Ho scoperto che se aggiungo esplicitamente metodi web falsi che restituiscono solo quei tipi, vengono visualizzati i tipi lato client. C'è un modo per forzare il rendering di quell'enum con metodi web diversi dai falsi?

Voglio l'enum perché ho bisogno di scorrere attraverso quella Lista < > e in base al PhoneNumberType fare qualcosa di diverso. Preferirei non codificare i numeri magici o codificare la definizione di enum.

È stato utile?

Soluzione

Devo aggiungere l'attributo GenerateScriptType alla firma del metodo.

Quindi il mio metodo di pagina è ora

[WebMethod]
[GenerateScriptType(typeof(PhoneNumberType))]
[GenerateScriptType(typeof(PhoneNumber))]
public static Contact GetContact(Guid id)
{
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top