需求 如下面项目结构我们会在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
{
{
this.lblUserName.Text = value;
}
}
public String Email
{
{
this.lblEmail.Text = value;
}
}
这样就可以在Application_Startup事件中获取化参数并传递给UserControl如下代码所示:private void Application_Startup(object sender, StartupEventArgs e)
{
Page page = Page;
page.UserName = e.InitParams["username"];
page.Email = e.InitParams["email"];
this.RootVisual = page;
}
这样我们就通过InitParams来在Silverlight应用中获取到了ASP.NET页面参数运行后效果如下图所示:使用HtmlDocument 其实上面思路方法获取ASP.NET页面中参数有些麻烦我们可以直接使用HtmlDocument在HtmlDocument中定义了QueryString属性如下代码所示:
这样我们可以在Silverlight直接使用HtmlDocument对象来获取当前Silverlight应用宿主页面中参数如下代码所示:
void Page_Loaded(object sender, RoutedEventArgs e)
{
IDictionary<String, String> paras = HtmlPage.Document.QueryString;
this.lblUserName.Text = paras["username"];
this.lblEmail.Text = paras["email"];
}
运行后可以看到和上面效果致:整理总结 本文内容非常简单介绍了如何在Silverlight应用中获取ASP.NET页面参数希望对大家有所帮助
最新评论