2008-11-03 116 views
0

我之前曾问过类似的问题,但我并没有牢牢把握我遇到的问题。我的问题是我无法从页面更改时驻留在主文本中的TextBox中获取数据。这里是发生了什么事情:将表单数据从masterpage传递到其他页面ASP.NET

  1. MasterPage与文本框和按钮。
  2. 数据输入文本框并点击按钮。
  3. 表单的操作设置为search.aspx,webapp在那里浏览。
  4. 这个函数获取文本框的内容:

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)上。如果我再次输入搜索字符串,代码会返回我放入文本框的任何内容。我尝试修改上面的代码从MasterPreviousPage但由于文本框控件驻留在母版页上,根本不起作用。

希望我能够把背景信息做好,让我知道是否需要进一步澄清。


编辑:使用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 

回答

2

对于要加载到控件中的页面的价值,你必须是一个回传内,因而从搜索发布时,它的工作原理的原因页。

要获得输入来自其他区域的值,您需要使用Request.Form(“Element”)从发布的表单中获取值。如果这是您需要的方式,请确保您知道搜索框的ID,并且您应该没问题。

相关问题