轉帖|其它|編輯:郝浩|2011-03-07 13:34:53.000|閱讀 752 次
概述:在開發Silverlight應用程序時,我們經常會遇到這樣一種情況,需要在Silverlight應用程序的UserControl中獲取 ASP.NET頁面參數,這個參數不一定來自于當前Silverlight應用程序的宿主頁面,而有可能來自于其它的ASP.NET頁面。本文我們簡單的介紹一下如何在Silverlight應用程序中獲取ASP.NET頁面參數。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在開發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頁面參數,希望對大家有所幫助。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載