我正在创建一个使用<Button>
代码的Silverlight应用程序,并在HtmlPage.Window.Navigate(new Uri("http://www.google.com"));
事件期间调用Click
。
在调试中,这很好用。我可以单击按钮并重定向到请求的位置。将此发布到服务器时,请求的操作无法执行。
我还尝试了其他变体,例如通过HtmlPage.Window.Invoke()
调用JavaScript或只使用HtmlPage.Document.Submit()
简单刷新页面,但是一旦推送到服务器就无法工作。
我在这一点上很难过。文件运行的两个位置之间唯一真正的区别是:
似乎任何时候Silverlight应用程序尝试在JavaScript级别上与MVC页面交互,它都会失败(当然,不会引发任何可见错误)。我之所以认为这是因为,当我写这篇文章时,我试图通过Silverlight中的MessageBox.Show()
命令弹出一个消息框 - 它没有出现。
我可以尝试其他任何想法吗?
答案 0 :(得分:2)
端口81上的XAP和您的JavaScript在端口80上的事实使这成为跨域调用。默认情况下,Silverlight不允许跨域JavaScript交互。
对于这种情况,请查看security settings。
我认为在您的情况下,有必要使用enableHtmlAccess启用跨域HTML访问,如下所示:
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2,"
type="application/x-silverlight-2"
width="300" height="100">
<param name="source"
value="http://www.northwindtraders.com/MySample.xap"/>
<param name="enableHtmlAccess" value="true" />
</object>
</div>