Las definiciones de objeto no se representan para los métodos de página ASP.Net

StackOverflow https://stackoverflow.com/questions/627014

  •  06-07-2019
  •  | 
  •  

Pregunta

Estoy usando los métodos de página de ASP.Net Ajax y tengo el problema de que no se está representando la definición de una enumeración. Esto es lo que tengo:

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
}

Entonces tengo un método web simple como:

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

En el lado del cliente termino con una clase MyNamespace.Contact; sin embargo, no tengo un MyNamespace.PhoneNumber o MyNameSpace.PhoneNumberType. Descubrí que si agrego explícitamente métodos web falsos que solo devuelven esos tipos, se representan los tipos del lado del cliente. ¿Hay alguna manera de forzar que la enumeración se represente además de los métodos web falsos?

Quiero la enumeración porque necesito recorrer en iteración esa lista < > y basado en PhoneNumberType, haga algo diferente. Prefiero no codificar números mágicos o codificar la definición de enumeración.

¿Fue útil?

Solución

Necesito agregar el atributo GenerateScriptType a la firma del método.

Entonces mi método de página es ahora

[WebMethod]
[GenerateScriptType(typeof(PhoneNumberType))]
[GenerateScriptType(typeof(PhoneNumber))]
public static Contact GetContact(Guid id)
{
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top