2012-03-30 128 views
1
Request.Form("ListBox1.ClientID") 

什麼也沒返回webcontentformusercontrols。但它在正常的webform中工作得很好。Request.Form(「ListBox1.ClientID」)什麼都不返回

所有的dropdownslistListbox都由jquery填充。所以服務器無法檢索選定的值,因爲它們根本不存在於服務器的第一位,但它們確實存在於客戶端。然後我使用Request.Form它與普通的Webform完美配合,但它在webcontentpagesusercontrols中沒有任何回報。

我真的很喜歡這個問題,任何想法都會有所幫助。

回答

0

如果您在ViewState之外填充項目,就像您所說的那樣,服務器將不知道它們。你可以看看這個問題的更深入的瞭解:

Client-side JavaScript ViewState Update in asp .net forms

我使用了一個隱藏要素部分在我的項目與文本框來存儲選擇的值,並且通過將數據傳遞迴服務器按鈕__doPostBack();$button.click();致電。

+0

引號錯誤... Request.Form(ListBox1.ClientID)不返回任何內容。 – Zubarik 2012-03-30 13:39:47

+0

ListBox1.SelectedValue沒有返回任何內容,因爲它已被填充客戶端。 – Zubarik 2012-03-30 13:41:44

+0

ListBox1在哪裏,你試圖從哪裏訪問它? MasterPage,ContentPage,UserControl? – 2012-03-30 13:43:20

7

嘗試:

Request.Form(ListBox1.UniqueID) 
+0

隨着UniqueID解決了什麼目的。感謝兄弟... – Zubarik 2012-03-30 13:59:37

+0

很高興我能幫忙! – sbhomra 2012-03-30 14:00:36

+0

如果你必須填充一組相關的下拉列表(比如Country,State,City),你更喜歡一個cascadingdropdown還是jquery? – Zubarik 2012-03-30 14:06:56

0

爲了使用Request.Form訪問值,則需要通過控制名稱找一找,無法控制ID。所以首先,如果你想能夠做到Request.Form["SomeID"],確保頁面上顯示的控件ID和控件名稱完全相同。其次,您的案例中的實際控制ID很可能不是"ListBox1.ClientID"。我想你可能打算做Request.Form[ListBox1.ClientID]。第三,我的建議是,一旦頁面回覆,你就設置一個斷點,然後你將手錶添加到Request.AllKeys,這樣你就可以準確地看到什麼是可以用來檢索提交值的關鍵名稱。

+0

所有的控件都在AllKeys中,當我用UniqueID嘗試它時,就像sbhomra說它檢索了像魔術一樣的值。 – Zubarik 2012-03-30 14:05:00