2012-03-30 75 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