2013-11-14 39 views
5

我使用ASP和C#在.NET中創建了一個Web表單。此表格有一個DropDownList控件與其AutoPostBack屬性設置爲如何在.NET C#中正確使用QueryString?

當用戶從DropDownList中選擇一個項目時,會顯示窗體上的一些數據。

現在,我希望用戶能夠通過複製其上具有QueryString的URL(如http://www.site.com?ProdID=1234)來共享他或她的數據。

我做了以下嘗試做到這一點:

protected void Page_Load(object sender, EventArgs e) 
{ 
    // check if the URL has a QueryString item if yes the use it. 
    if (!String.IsNullOrEmpty(Request.QueryString["ProdID"])) 
    { 
     ddlProduct.SelectedIndex = ddlProduct.Items.IndexOf(ddlProduct.Items.FindByValue(Request.QueryString["ProdID"])); 
    } 
} 

這段代碼的問題是,當用戶從DropDownList中選擇不同的項目他或她所選擇的項目被用在Page_Load(覆蓋),因爲我們現在在URL上有一個QueryString。 (我建立的QueryString,然後使用重定向()方法到一個事件相同的頁面)

所以我的問題在於:是否有可能不斷更改URL的查詢字符串時,用戶更改所選來自DropDownList的項目,並在所選項目的表單上顯示正確的數據?

我感覺這就像是雞還是雞蛋的問題。

謝謝。

+0

'如果(Page.IsPostBack && String.IsNullOrEmpty(的Request.QueryString [ 「的ProdID」]))' – asawyer

回答

10

檢查頁面是否被回發到服務器上,與現有的邏輯一起,就像這樣:!

if(!IsPostBack && !String.IsNullOrEmpty(Request.QueryString["ProdID"])) 
{ 
    ddlProduct.SelectedIndex = ddlProduct.Items.IndexOf(ddlProduct.Items.FindByValue(Request.QueryString["ProdID"])); 
}