我之前曾问过类似的问题,但我并没有牢牢把握我遇到的问题。我的问题是我无法从页面更改时驻留在主文本中的TextBox中获取数据。这里是发生了什么事情:将表单数据从masterpage传递到其他页面ASP.NET
- MasterPage与文本框和按钮。
- 数据输入文本框并点击按钮。
- 表单的操作设置为search.aspx,webapp在那里浏览。
- 这个函数获取文本框的内容:
Public Function oSearchString(ByVal oTextBoxName As String) As String
If Master IsNot Nothing Then
Dim txtBoxSrc As New TextBox
txtBoxSrc = CType(Master.FindControl(oTextBoxName), TextBox)
If txtBoxSrc IsNot Nothing Then
Return txtBoxSrc.Text
End If
End If
Return Nothing
End Function
当此代码执行时,它返回""
,即使有文本输入框。我试着把一个默认值放到框中,并且通过就好了(即<asp:TextBox ID="searchbox" runat="server" text="searchbox"></asp:TextBox>
得到"searchbox"
)。
现在我已经从主页提交了搜索表单,我在搜索页面(search.aspx)上。如果我再次输入搜索字符串,代码会返回我放入文本框的任何内容。我尝试修改上面的代码从Master
到PreviousPage
但由于文本框控件驻留在母版页上,根本不起作用。
希望我能够把背景信息做好,让我知道是否需要进一步澄清。
编辑:使用Request.Form("searchbox")
产生Nothing
。我检查了Request.Form()
对象,发现我的文本框的ID实际上是ctl00$searchbox
。使用它作为ID或其索引(在这种情况下为3)给了我正确的结果。最好重写函数来检查Request.Form()
中包含searchbox
的密钥的所有密钥,还是有办法获得文本框的实际ID?对于前一种选择,这是我想出了:
Public Function oSearchString(ByVal oTextBoxName As String) As String
For Each oKey As String In Request.Form.AllKeys
If oKey.Contains(oTextBoxName) Then
Return Request.Form(oKey)
End If
Next
Return ""
End Function