2009-03-09 3 views
0

Ich verwende ASP.Net Ajax die Seite Methoden und ich habe ein Problem, dass eine Aufzählung der Definition nicht gerendert wird. Hier ist, was ich habe:Objektdefinitionen werden nicht für ASP.Net Seite Methoden gerendert

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 
} 

ich dann eine einfache Web-Methode haben, wie:

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

Auf der Clientseite I mit einer MyNamespace.Contact Klasse am Ende; jedoch habe ich keine MyNamespace.PhoneNumber oder MyNameSpace.PhoneNumberType. Ich habe festgestellt, dass, wenn ich explizit gefälschte Webmethoden hinzufüge, die nur diese Typen zurückgeben, Client-seitige Typen gerendert werden. Gibt es eine Möglichkeit, diese Aufzählung zu anderen als falschen Webmethoden zu zwingen?

Ich möchte die enum, weil ich durch diese Liste <> durchlaufen und basierend auf dem PhoneNumberType etwas anderes tun müssen. Ich würde lieber keine magischen Zahlen kodieren oder die Enum-Definition hartcodieren.

Antwort

0

Ich muss GenerateScriptType Attribut der Methodensignatur hinzufügen.

So ist meine Seite Methode jetzt

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