在开发Silverlight应用程序时,我们经常会遇到这样一种情况,需要在Silverlight应用程序的UserControl中获取ASP.NET页面参数,这个参数不一定来自于当前Silverlight应用程序的宿主页面,而有可能来自于其它的ASP.NET页面。
本文我们简单的介绍一下如何在Silverlight应用程序中获取ASP.NET页面参数。
需求
如下面的项目结构,我们会在Default.aspx页面中需要传递两个值到SilverlightTestPage.aspx页面,并且需要在SilverlightTestPage.aspx页面所宿主的Silverlight应用程序中获取并显示:
其中Default.aspx页面看起来如下图所示:
在单击“Submit”按钮时,转向SilverlightTestPage.aspx页面,并传递两个参数,如下代码所示:
protected void btnSubmit_Click(object sender, EventArgs e)
{
Response.Redirect(String.Format("SilverlightTestPage.aspx?username={0}&email={1}",
this.txtUserName.Text,
this.txtEmail.Text));
}
使用InitParams
第一种方法,我们自然会使用InitParams属性,在Silverlight宿主页面加载时,我们在ASPX页面中获取参数,并作为初始化参数传递给Silverlight应用程序,如下代码所示:
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中设置两个属性,如下代码所示:
public String UserName
{
set {
this.lblUserName.Text = value;
}
}
public String Email
{
set {
this.lblEmail.Text = value;
}
}