Frage

Ich bin mit ASP.Net Ajax Seite Methoden und ich habe ein Problem, dass eine Definition der Aufzählung wird nicht wiedergegeben wird. Hier ist, was ich habe:

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 habe dann eine einfache Web-Methode wie zum Beispiel:

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

Auf der Clientseite I mit einer MyNamespace.Contact Klasse am Ende; aber ich habe nicht ein MyNamespace.PhoneNumber oder MyNameSpace.PhoneNumberType. Ich habe festgestellt, dass, wenn ich ausdrücklich gefälschte webmethods hinzufügen, die nur diese Typen dann wieder Typen Client-Seite gerendert werden. Gibt es eine Möglichkeit, dass Enum zu zwingen gerendert andere dann gefälschte Web-Methoden werden?

Ich mag die Enum, weil ich durch diese List <> und auf der Grundlage der PhoneNumberType etwas anderes tun müssen laufen. Ich möchte lieber nicht magischen Zahlen codieren oder die ENUM deffinition codieren.

War es hilfreich?

Lösung

Ich muss hinzufügen GenerateScriptType der Methode Signatur-Attribut.

Also meine Seite Methode ist jetzt

[WebMethod]
[GenerateScriptType(typeof(PhoneNumberType))]
[GenerateScriptType(typeof(PhoneNumber))]
public static Contact GetContact(Guid id)
{
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top