技巧: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