Frage

Ich arbeite an einer Silverlight-Anwendung, bei der ich die Vorteile der Microsoft ASP.NET AJAX-Clientbibliothek nutzen möchte.Ich rufe die Bibliothek über die HTML Bridge auf, die Teil von Silverlight 2 ist.Silverlight bietet großartige Unterstützung für die Übergabe von Typen zwischen JavaScript und verwaltetem Code, aber jetzt bin ich auf ein Problem gestoßen.

Microsoft ASP.NET AJAX-Clientbibliotheken enthalten ein „Typsystem“, und das Framework überprüft unter anderem, ob die Parameter den richtigen Typ haben.Die spezifische Funktion, die ich aufrufe, ist die Sys.Application.addHistoryPoint, und der Validierungscode sieht so aus:

var e = Function.validateParams(arguments, [
    {name: "state", type: Object},
    {name: "title", type: String, mayBeNull: true, optional: true}
]);

Ich habe versucht, alle Arten von CLR-Typen als Statusparameter zu übergeben (C#-Strukturen, [ScriptableTypes], Dictionary-Typen usw.Und jedes Mal erhalte ich die Fehlermeldung:

„Sys.ArgumentTypeException:Objekt vom Typ „Funktion“ kann nicht in Typ „Objekt“ konvertiert werden

Dieser Fehler kommt offensichtlich von der Parametervalidierung ...Aber WARUM denkt ASP.NET AJAX, dass meine Typen Funktionen sind?Versteht jemand die Typvalidierung in MS AJAX?

Ich weiß, dass ich Problemumgehungen wie einen Anruf durchführen kann HtmlPage.Window.Eval("...") und meine JS-Integration als Strings übergeben, aber das möchte ich nicht.Ich möchte einen echten .NET-Typ als Statusparameter übergeben.

War es hilfreich?

Lösung

Ich habe einen ziemlich guten Überblick darüber gefunden Hier, aber selbst diese Übersicht schien jedes Szenario außer dem von Ihnen erwähnten abzudecken.Ich frage mich, ob dies nicht möglich ist, da Javascript-Objekte tatsächlich (mehr oder weniger) Funktionen sind.

Was wäre, wenn Sie eine Wrapper-Funktion schreiben würden, die das Statusobjekt mithilfe einer Zeichenfolge erstellen könnte?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top