我使用以下命令从带有WebBroser控件的C#应用程序调用javascript函数
webBrowser1.Document.InvokeScript("function", new object[] { "arg" });
有没有办法将对象(字符串,双等除外)作为参数传递给函数测试?
class SomeObject
{
int number = 0;
string str = "1234";
}
webBrowser1.Document.InvokeScript("function", new object[] { new SomeObject() });
typeof(args1)
下面的javascript中的上述重新结果会返回unknown
function function(arg1) {
alert(typeof(arg1));
}
答案 0 :(得分:6)
显然非常微不足道。类SomeObject
只需标记为像这样的COM对象。
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
class SomeObject
{
int number = 0;
string str = "1234";
}
但是无法从Javascript访问属性。
答案 1 :(得分:-2)
我的解决方案可能看起来很糟糕。但它的工作
<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>
并在代码中
this.body.Attributes["args"] = "my arguments";
如果您使用UpdatePanel,只需使用UpdatePanel内的控件。
修改
要在UpdatePanel中传递参数,请将任一控件放在更新面板
中<input id="args" runat="server" type="hidden"/>
or
<asp:HiddenField ID="args" runat="server"/>
在js中更改'document.getElementsByTagName'以按ID获取元素并使用args.value