技巧:Silverlight应用程序中如何获取ASP.NET页面参数

版权声明:原创做品,容许转载,转载时请务必以超连接形式标明文章 原始出处 、做者信息和本声明。不然将追究法律责任。 http://terrylee.blog.51cto.com/342737/87093

概述

在开发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;
            }
            }
这样就能够在Application_Startup事件中获取初始化参数,并传递给UserControl,以下代码所示:
private void Application_Startup(object sender, StartupEventArgs e)
            {
            Page page = new 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页面参数,但愿对你们有所帮助。

本文出自 “TerryLee技术专栏” 博客,请务必保留此出处http://terrylee.blog.51cto.com/342737/87093html

转载于:https://www.cnblogs.com/hdjjun/archive/2008/12/24/1361563.htmlpost