星辰.Net技术社区论坛

首页 » .NET » Silverlight » Silverlight应用程序中如何获取ASP.NET页面参数
admin - 2008-7-10 0:46:00
概述 ”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
在开发Silverlight应用程序时,我们经常会遇到这样一种情况,需要在Silverlight应用程序的UserControl中获取ASP.NET页面参数,这个参数不一定来自于当前Silverlight应用程序的宿主页面,而有可能来自于其它的ASP.NET页面。”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
本文我们简单的介绍一下如何在Silverlight应用程序中获取ASP.NET页面参数。”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
需求”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
如下面的项目结构,我们会在Default.aspx页面中需要传递两个值到SilverlightTestPage.aspx页面,并且需要在SilverlightTestPage.aspx页面所宿主的Silverlight应用程序中获取并显示:”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
其中Default.aspx页面看起来如下图所示:”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
在单击“Submit”按钮时,转向SilverlightTestPage.aspx页面,并传递两个参数,如下代码所示:”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
protected void btnSubmit_Click(object sender, EventArgs e)”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
{”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    Response.Redirect(String.Format("SilverlightTestPage.aspx?username={0}&email={1}",”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
        this.txtUserName.Text,”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
        this.txtEmail.Text));”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
}
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
使用InitParams”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
第一种方法,我们自然会使用InitParams属性,在Silverlight宿主页面加载时,我们在ASPX页面中获取参数,并作为初始化参数传递给Silverlight应用程序,如下代码所示:”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
protected void Page_Load(object sender, EventArgs e)”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
{”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    this.Xaml1.InitParameters = String.Format("username={0},email={1}",”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
        Request.QueryString["username"],”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
        Request.QueryString["email"]);”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
}
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
然后在Silverlight应用程序的UserControl中设置两个属性,如下代码所示:”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
public String UserName”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
{”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    set {”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
        this.lblUserName.Text = value;”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    }”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
}”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
public String Email”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
{”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    set {”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
        this.lblEmail.Text = value;”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    }”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
}
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
这样就可以在Application_Startup事件中获取初始化参数,并传递给UserControl,如下代码所示:”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
private void Application_Startup(object sender, StartupEventArgs e)”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
{”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    Page page = new Page();”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    page.UserName = e.InitParams["username"];”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    page.Email = e.InitParams["email"];”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    this.RootVisual = page;”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
}
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
这样我们就通过InitParams来在Silverlight应用程序中获取到了ASP.NET页面的参数,运行后效果如下图所示:”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
使用HtmlDocument”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
其实上面的方法获取ASP.NET页面中参数有些麻烦,我们可以直接使用HtmlDocument,在HtmlDocument中定义了QueryString属性,如下代码所示:”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
这样我们可以在Silverlight直接使用HtmlDocument对象来获取当前Silverlight应用程序宿主页面中的参数,如下代码所示:”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
void Page_Loaded(object sender, RoutedEventArgs e)”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
{”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    IDictionary<String, String> paras = HtmlPage.Document.QueryString;”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    this.lblUserName.Text = paras["username"];”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
    this.lblEmail.Text = paras["email"];”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
}
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
运行后可以看到与上面的效果一致:”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
总结”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u
本文的内容非常简单,介绍了如何在Silverlight应用程序中获取ASP.NET页面参数,希望对大家有所帮助”n‹ƒÞwww.netcsharp.cn[„Ç0¯–~u

附件: PassParameterFromAspnet.zip
1
查看完整版本: Silverlight应用程序中如何获取ASP.NET页面参数