Определения объектов не отображаются для методов страниц ASP.Net - PullRequest
0 голосов
/ 09 марта 2009

Я использую методы страницы 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 сделать что-то другое. Я бы не стал жестко кодировать магические числа или жестко кодировать определение enum.

1 Ответ

0 голосов
/ 09 марта 2009

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

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

[WebMethod]
[GenerateScriptType(typeof(PhoneNumberType))]
[GenerateScriptType(typeof(PhoneNumber))]
public static Contact GetContact(Guid id)
{
}
...