当前位置:  开发笔记 > 编程语言 > 正文

Silverlight可以启动页面刷新吗?

如何解决《Silverlight可以启动页面刷新吗?》经验,为你挑选了3个好方法。

更新:另一个标题可能是:如何从我的silverlight 2.0应用程序调用javascript.

这是一个关于Silverlight大师的快速问题.

我有一个显示秒表倒计时的Silverlight应用程序.该应用程序托管在ASP.Net Web应用程序中,我想要它做的是当秒表击中零时,应用程序强制主机页面的服务器页面刷新.

这可能吗?

如果是这样,代码片段的任何可能性?



1> R4cOOn..:

为什么不简单地留在Silverlight端并打电话

System.Windows.Browser.HtmlPage.Document.Submit();

为我服务.整个页面重新加载,Silverlight控件重新启动.


如果页面上有
元素(例如任何Web窗体页面),则此方法有效.如果没有元素(例如许多ASP.NET MVC页面),则无需提交任何内容,并且您会收到InvalidOperationException.

2> Patrick McDo..:

显然你可以使用Silverlight调用JS脚本

HtmlPage.Window.CreateInstance

要么

HtmlPage.Window.Invoke

刷新页面的JavaScript 是

location.reload(true)

我不是Silverlight或JavaScript专家,因此不确定它是否适用于所有浏览器,甚至根本不适用.

编辑:

斯科特用他的最终解决方案发表了对这个答案的评论.

他需要在名为reload()的ASP.Net页面上创建一个JavaScript客户端函数,该函数执行location.reload(true).然后从他的C#代码重新加载是一件简单的事情:

HtmlPage.Window.Invoke("reload");

正如@ R4cOON建议的那样,你也可以使用:

System.Windows.Browser.HtmlPage.Document.Submit();


好的,这是90%的方式.我需要的只是在我的情况下在ASP.Net页面上创建一个javascript客户端函数,称为reload(),它执行了location.reload(true).然后从我的C#代码中获得这一行很简单:HtmlPage.Window.Invoke("reload"); 再次感谢.

3> adv12..:

只是快速说明为什么HtmlPage.Window.Invoke("location.reload(true);");不起作用:从我的快速测试看来,Silverlight实现Invoke的方式是在指定的JavaScript对象上查找具有给定名称的属性并调用它.所以这段代码会说,"在窗口对象上找到一个名为'location.reload(true);'的属性 并用零参数调用它." 相反,有一种GetProperty方法可以让你获得窗口的location属性并reload使用参数调用它true.最终代码如下所示:

((ScriptObject)HtmlPage.Window.GetProperty("location")).Invoke("reload", true);

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有