Asp.net 是否可以通过ASPX页面调用Silverlight代码隐藏方法?
我在ASP.NET页面中嵌入了一个Silverlight应用程序,这个Silverlight应用程序有两种方法 我想通过ASPX页面调用这些方法,即我的ASPX页面有一个Asp.net 是否可以通过ASPX页面调用Silverlight代码隐藏方法?,asp.net,silverlight,methods,silverlight-5.0,Asp.net,Silverlight,Methods,Silverlight 5.0,我在ASP.NET页面中嵌入了一个Silverlight应用程序,这个Silverlight应用程序有两种方法 我想通过ASPX页面调用这些方法,即我的ASPX页面有一个按钮控件,当我单击此按钮时,我想调用Silverlight方法之一 可能吗?我该怎么做?您可以使用Javascript进行silverlight方法调用 要允许用户从JavaScript访问Silverlight的方法,必须将[ScriptableMember]属性设置为该方法 如果希望通过ASPX方法/事件调用这些方法,则应生
按钮控件,当我单击此按钮时,我想调用Silverlight方法之一
可能吗?我该怎么做?您可以使用Javascript进行silverlight方法调用
要允许用户从JavaScript访问Silverlight的方法,必须将[ScriptableMember]属性设置为该方法
如果希望通过ASPX方法/事件调用这些方法,则应生成调用silverlight方法的Javascript
例如:
Silverlight:
ScriptableClass.cs
public class ScriptableClass
{
[ScriptableMember]
public void ShowAlertPopup(string message)
{
MessageBox.Show(message, "JS Message", MessageBoxButton.OK);
}
}
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new MainPage();
ScriptableClass myScript = new ScriptableClass();
HtmlPage.RegisterScriptableObject("scriptableClass", myScript);
}
App.xaml.cs
public class ScriptableClass
{
[ScriptableMember]
public void ShowAlertPopup(string message)
{
MessageBox.Show(message, "JS Message", MessageBoxButton.OK);
}
}
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new MainPage();
ScriptableClass myScript = new ScriptableClass();
HtmlPage.RegisterScriptableObject("scriptableClass", myScript);
}
index.html
<script type="text/javascript">
var ctlSLHost = null;
function onPluginLoaded(sender, args) {
ctlSLHost = sender.getHost();
}
function InvokeSLMethod_ShowAlertPopup() {
ctlSLHost.Content.scriptableClass.ShowAlertPopup
("Showing alert from JS in SL!");
}
</script>
<div>
<div style="width: 250px; background: lightblue; font-weight: bold;height:30px">
HTML Part
</div>
<div>
<input type="button" value="Invoke SL Method - ShowAlertPopup"
onclick="InvokeSLMethod_ShowAlertPopup();" /></div>
</div>
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
width="100%" height="80%">
<param name="source" value="ClientBin/Silverlight2JSViseVersa.xap" />
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50826.0" />
<param name="autoUpgrade" value="true" />
<param name="onLoad" value="onPluginLoaded" />
<a href=http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0
style="text-decoration: none">
<img src=http://go.microsoft.com/fwlink/?LinkId=161376
alt="Get Microsoft Silverlight"
style="border-style: none" />
</a>
</object>
var ctlSLHost=null;
函数onpluginload(发送方,参数){
ctlSLHost=sender.getHost();
}
函数InvokeSLMethod_ShowAlertPopup(){
CtlsHost.Content.scriptableClass.ShowAlertPopup
(“在SL中显示来自JS的警报!”);
}
HTML部分
由于Silverlight在客户端上,因此不知道这是如何工作的。您正在尝试获取一个aspx代码隐藏事件来调用基于客户端的Silverlight方法。听起来您需要仔细查看您的需求。根据您的需要,您可能可以使用Javascript/Silverlight“桥”来完成这项工作。