4 Stimmen

Übergabe von Objekten als Argument an Javascript über HtmlDocument.InvokeScript

Ich verwende das folgende, um eine Javascript-Funktion aus einer C#-Anwendung mit einem WebBroser-Steuerelement aufzurufen

webBrowser1.Document.InvokeScript("function", new object[] { "arg" });

Gibt es eine Möglichkeit, ein Objekt (andere als String, Double etc.) als Argument an die Funktion test übergeben?

class SomeObject 
{
     int number = 0;
     string str = "1234";
}

webBrowser1.Document.InvokeScript("function", new object[] { new SomeObject() });

Die obigen Angaben werden in dem folgenden Javascript wiedergegeben typeof(args1) gibt zurück. unknown

function function(arg1) {
   alert(typeof(arg1));
}

6voto

Fedearne Punkte 6682

Das ist offensichtlich ziemlich trivial. Die Klasse SomeObject muss einfach als COM-Objekt wie folgt gekennzeichnet werden.

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
class SomeObject 
{
     int number = 0;
     string str = "1234";
}

Auf die Eigenschaften kann jedoch nicht über Javascript zugegriffen werden.

-2voto

Bonshington Punkte 3752

Meine Lösung sieht vielleicht etwas seltsam aus, aber sie funktioniert.

<script type="text/javascript">
 function checkArgs(){
   var args = document.getElementsByTagName("body")[0].args;
   if(args) alert(args);
 }
</script>
...
    <body id="body" runat="server" onload="checkArgs();">
    ...
    </body>

und im Code hinter

this.body.Attributes["args"] = "my arguments";

Wenn Sie UpdatePanel verwenden, verwenden Sie einfach das Steuerelement innerhalb von UpdatePanel.

editar

Für die Übergabe von Argumenten in UpdatePanel, setzen Sie eines der Steuerelemente in UpdatePanel

<input id="args" runat="server" type="hidden"/>
or
<asp:HiddenField ID="args" runat="server"/>

in js 'document.getElementsByTagName' ändern, um Element nach id zu erhalten und args.value verwenden

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X