Silverlight与HTML交互示例

在开发Web应用程序时,经常需要在SilverlightHTML页面之间进行数据交互。本文将介绍一种方法,通过JavaScript将HTML页面上的数据发送到Silverlight页面,并展示如何使用Silverlight的RegisterScriptableObject方法来实现这一过程。

首先,需要在Silverlight页面上定义一个类,这个类将被JavaScript调用。可以通过添加[ScriptableMember]属性来实现这一点。下面是一个简单的示例:

public partial class Page : UserControl { public Page() { InitializeComponent(); HtmlPage.RegisterScriptableObject( "loginProvider", this ); } [ScriptableMember()] public void Login(string password, string login) { this.Message.Text = "Your login is: " + login + "\r\nFirst letter of your password is: " + (password.Length > 0 ? password[0].ToString() : ""); } }

在上面的代码中,定义了一个名为Login的方法,这个方法将被JavaScript调用。通过HtmlPage.RegisterScriptableObject方法将当前对象注册为可脚本化的,这样就可以通过JavaScript访问了。

接下来,需要在HTML页面上编写JavaScript代码,以收集表单数据并将其发送到Silverlight控件。可以通过定义一个名为invokeManagedCode的函数来实现这一点。

<script type="text/javascript"> function invokeManagedCode(){ var form = document.getElementById("loginpanel"); var password = form.password.value; var user = form.user.value; var control = document.getElementById("sl2b2"); control.Content.loginProvider.Login(password, user); } </script>

在上面的JavaScript代码中,首先获取了表单元素,然后获取了用户名和密码的值。最后,通过Silverlight控件的ID调用了Silverlight页面上定义的Login方法。

为了使这个示例更加完整,还需要在HTML页面上添加一个表单,以便用户可以输入他们的用户名和密码。

<form id="loginpanel" name="input" ACTION="javascript:invokeManagedCode()"> Username: <input type="text" name="user"> Password: <input type="password" name="password"> <input type="Submit" value="Login"> </form>

在这个表单中,定义了两个输入字段,一个用于用户名,另一个用于密码。当用户点击“登录”按钮时,invokeManagedCode函数将被调用,从而将数据发送到Silverlight页面。

需要注意的是,这只是实现HTML和Silverlight之间交互的一种方法。实际上,有多种方式可以实现这种交互,具体取决于具体需求和应用场景。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485