技巧:Silverlight應用程式中如何擷取ASP.NET頁面參數

來源:互聯網
上載者:User
概述

在開發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頁面參數,希望對大家有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.