Silverlight应用获取ASP.NET页面参数的方法

需积分: 9 3 下载量 105 浏览量 更新于2024-10-14 收藏 342KB DOC 举报
"本文主要介绍如何在Silverlight应用程序中获取ASP.NET页面的参数。在开发过程中,有时需要从非宿主ASP.NET页面传递参数到Silverlight应用。通过使用InitParams属性,可以在ASPX页面加载时将参数传递给Silverlight应用程序,并在UserControl中访问这些参数。" 在Silverlight应用程序与ASP.NET页面的交互中,获取ASP.NET页面的参数是一个常见的需求。特别是当用户在ASP.NET页面上进行操作后,跳转到一个承载Silverlight组件的新页面,这时需要将ASP.NET页面上的数据带到Silverlight应用中。以下是如何实现这一过程的详细步骤: 首先,假设我们有一个名为Default.aspx的页面,用户在这个页面上输入用户名和电子邮件,点击“Submit”按钮后,页面会跳转到SilverlightTestPage.aspx,并传递用户名和电子邮件这两个参数。在Default.aspx的“Submit”按钮事件处理程序中,我们可以使用`Response.Redirect`方法来实现跳转并传递参数: ```csharp protected void btnSubmit_Click(object sender, EventArgs e) { Response.Redirect(String.Format("SilverlightTestPage.aspx?username={0}&email={1}", this.txtUserName.Text, this.txtEmail.Text)); } ``` 接下来,在SilverlightTestPage.aspx页面加载时,我们需要获取URL查询字符串中的参数,并将其作为初始化参数传递给Silverlight应用程序。这可以通过设置Silverlight控件(例如Xaml1)的`InitParameters`属性来完成: ```csharp protected void Page_Load(object sender, EventArgs e) { this.Xaml1.InitParameters = String.Format("username={0},email={1}", Request.QueryString["username"], Request.QueryString["email"]); } ``` 在Silverlight应用程序的UserControl中,我们需要创建对应的公共属性以便于访问这些参数。这里创建了两个属性,`UserName`和`Email`,并将它们与UI元素(如Label)绑定: ```csharp public string UserName { set { this.lblUserName.Text = value; } } public string Email { set { // 假设有一个名为lblEmail的Label用于显示电子邮件 this.lblEmail.Text = value; } } ``` 当Silverlight应用程序加载时,它会自动调用UserControl的构造函数,并且`InitParams`中的参数会作为键值对传递。你可以覆盖`InitializeComponent`方法来获取这些参数: ```csharp public partial class MyUserControl : UserControl { public MyUserControl() { InitializeComponent(); // 从InitParams获取参数 var initParams = (Dictionary<string, string>)Application.Current.Host.InitParams; if (initParams.ContainsKey("username")) this.UserName = initParams["username"]; if (initParams.ContainsKey("email")) this.Email = initParams["email"]; } } ``` 通过这种方式,Silverlight应用程序就能够成功地获取到ASP.NET页面传递过来的参数,并在UserControl中展示。这种方法简单易行,是连接ASP.NET和Silverlight之间数据传递的有效途径。