Silverlight可以启动页面刷新吗?

Sco*_*son 19 silverlight-2.0

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

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

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

这可能吗?

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

R4c*_*OOn 25

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

System.Windows.Browser.HtmlPage.Document.Submit();
Run Code Online (Sandbox Code Playgroud)

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

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

Pat*_*ald 20

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

HtmlPage.Window.CreateInstance
Run Code Online (Sandbox Code Playgroud)

要么

HtmlPage.Window.Invoke
Run Code Online (Sandbox Code Playgroud)

刷新页面的JavaScript 是

location.reload(true)
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

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

HtmlPage.Window.Invoke("reload");
Run Code Online (Sandbox Code Playgroud)

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

System.Windows.Browser.HtmlPage.Document.Submit();
Run Code Online (Sandbox Code Playgroud)

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

adv*_*v12 6

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

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