2013-02-28 68 views
1

我有2個DropDownLists在頁面呈現之前在c#代碼中填充。當頁面發回時,我可以成功獲取更改的值。但是,一個條件是如果第一個DropDownList中的值發生更改,我重新填充第二個下拉列表。我正在使用Ajax調用來實現這一點,並且所有內容都可以很好地工作。從填充Ajax的asp:DropDownList中獲取C#代碼的價值

問題是,當出現第二個DropDownList通過Ajax代碼填充的情況時,列表項和選定的值在回發時不會顯示在C#代碼中。我已經讀過,這不會發生。

DropDownList控件具有ID="cboMutations"

我終於得到這個工作使用下面的方法:

 Int32 id = 0; 
     if (!string.IsNullOrEmpty(Request.Form["ctl00$MainContent$cboMutations"])) 
     { 
      Int32.TryParse(Request.Form["ctl00$MainContent$cboMutations"], out id); 
     } 

我的主要問題是:

這是安全使用ctl00$MainContent$cboMutations引用屬性以這種方式?

它在開發中工作,但它會在部署時工作嗎?

回答

0

Asp.net嚴格限制接受的數據。一個asp下拉列表不允許你發送這樣的數據。這確保用戶只發送服務器提供的值。

在你的情況下,你正在使用html控件,並通過傳遞asp.net的內置安全性。您應該針對惡意用戶嘗試使用輸入ctl00$MainContent$cboMutations發送無效數據的情況進行編程。

由於您正在將數據解析爲int,因此惡意用戶可以做的事情很少。部署時也應該安全。

+0

感謝您的及時迴應。 – user2118751 2013-02-28 09:59:13