Определения объектов не отображаются для методов страниц ASP.Net

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

  •  06-07-2019
  •  | 
  •  

Вопрос

Я использую методы страницы ASP.Net Ajax, и у меня возникла проблема, заключающаяся в том, что определение перечисления не отображается. Вот что у меня есть:

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
}

Тогда у меня есть простой веб-метод, такой как:

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

На стороне клиента я получаю класс MyNamespace.Contact; однако у меня нет MyNamespace.PhoneNumber или MyNameSpace.PhoneNumberType. Я обнаружил, что если я явно добавляю фальшивые веб-методы, которые просто возвращают эти типы, то на стороне клиента будут отображаться типы. Есть ли способ заставить это перечисление быть представленным, а не поддельными веб-методами?

Я хочу перечисление, потому что мне нужно перебрать этот список < > и на основе PhoneNumberType сделать что-то другое. Я бы не стал жестко кодировать магические числа или жестко кодировать определение перечисления.

Это было полезно?

Решение

Мне нужно добавить атрибут GenerateScriptType в подпись метода.

Итак, мой метод страницы теперь

[WebMethod]
[GenerateScriptType(typeof(PhoneNumberType))]
[GenerateScriptType(typeof(PhoneNumber))]
public static Contact GetContact(Guid id)
{
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top