将表单数据从母版页传递到其他页面ASP.NET

时间:2008-11-03 16:03:57

标签: asp.net search master-pages

之前我曾问过类似的问题,但我并没有牢牢掌握我遇到的问题。我的问题是当页面改变时,我无法从驻留在主服务器上的TextBox中获取数据。以下是发生的事情:

  1. 带有TextBox和Button的MasterPage。
  2. 将数据输入TextBox并单击按钮。
  3. 表单的操作设置为search.aspx,webapp在那里导航。
  4. 此函数获取TextBox的内容:

  5. 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 ,但由于文本框控件位于母版页上,因此根本无效。< / p>

    希望我能够很好地列出背景信息,如果需要进一步澄清,请告诉我。


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

1 个答案:

答案 0 :(得分:2)

对于要加载到控件内页面的值,您必须在回发内,因此从搜索页面发布时它的工作原理。

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