Определения объектов не отображаются для методов страниц ASP.Net
-
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)
{
}