標籤:io 使用 ar for art div sp cti 代碼
asp.net Silverlight應用程式中擷取載體aspx頁面參數
有時候SL應用中需要使用由aspx頁面中傳遞過來的參數值,此時通常有兩種方法擷取
1. 使用InitParameters屬性,動態設定傳遞參數 。
2. 在SL工程中使用HtmlPage類來直接擷取頁面參數。
如下面的項目結構,我們會在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應用程式宿首頁面中的參數,如下代碼所示:
下面是利用HtmlPage類來擷取參數的代碼:
代碼如下:
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頁面參數