在开发Silverlight应用程序时我们经常会遇到这样一种情况需要在Silverlight应用程序的UserControl中获取ASPNET页面参数这个参数不一定来自于当前Silverlight应用程序的宿主页面而有可能来自于其它的ASPNET页面
本文我们简单的介绍一下如何在Silverlight应用程序中获取ASPNET页面参数
需求
如下面的项目结构我们会在Defaultaspx页面中需要传递两个值到SilverlightTestPageaspx页面并且需要在SilverlightTestPageaspx页面所宿主的Silverlight应用程序中获取并显示
其中Defaultaspx页面看起来如下图所示
在单击Submit按钮时转向SilverlightTestPageaspx页面并传递两个参数如下代码所示 protected void btnSubmit_Click(object sender EventArgs e)
{
ResponseRedirect(StringFormat(SilverlightTestPageaspx?username={}&email={}
thistxtUserNameText
thistxtEmailText));
}
使用InitParams
第一种方法我们自然会使用InitParams属性在Silverlight宿主页面加载时我们在ASPX页面中获取参数并作为初始化参数传递给Silverlight应用程序如下代码所示 protected void Page_Load(object sender EventArgs e)
{
thisXamlInitParameters = StringFormat(username={}email={}
RequestQueryString[username]
RequestQueryString[email]);
}
然后在Silverlight应用程序的UserControl中设置两个属性如下代码所示 public String UserName
{
set {
thislblUserNameText = value;
}
}
public String Email
{
set {
thislblEmailText = value;
}
}
这样就可以在Application_Startup事件中获取初始化参数并传递给UserControl如下代码所示 private void Application_Startup(object sender StartupEventArgs e)
{
Page page = new Page();
pageUserName = eInitParams[username];
pageEmail = eInitParams[email];
thisRootVisual = page;
}
这样我们就通过InitParams来在Silverlight应用程序中获取到了ASPNET页面的参数运行后效果如下图所示
使用HtmlDocument
其实上面的方法获取ASPNET页面中参数有些麻烦我们可以直接使用HtmlDocument在HtmlDocument中定义了QueryString属性如下代码所示
这样我们可以在Silverlight直接使用HtmlDocument对象来获取当前Silverlight应用程序宿主页面中的参数如下代码所示 void Page_Loaded(object sender RoutedEventArgs e)
{
IDictionary<String String> paras = HtmlPageDocumentQueryString;
thislblUserNameText = paras[username];
thislblEmailText = paras[email];
}
运行后可以看到与上面的效果一致
总结
本文的内容非常简单介绍了如何在Silverlight应用程序中获取ASPNET页面参数希望对大家有所帮助