Definizioni degli oggetti non visualizzate per i metodi di pagina ASP.Net
-
06-07-2019 - |
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.
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)
{
}