Передача данных формы с главной страницы на другие страницы ASP.NET - PullRequest
0 голосов
/ 03 ноября 2008

Я задавал подобный вопрос раньше, но у меня не было четкого представления о том, с чем я столкнулся. Моя проблема в том, что я не могу получить данные из TextBox, находящегося на главном сервере, когда страница меняется. Вот что происходит:

  1. MasterPage с TextBox и кнопкой.
  2. Данные вводятся в TextBox и нажимается кнопка.
  3. Действие формы установлено на search.aspx, веб-приложение перемещается туда.
  4. Эта функция получает содержимое TextBox:

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, но это не сработало вообще, поскольку элемент управления textbox находится на главной странице.

Надеюсь, я выложил справочную информацию достаточно хорошо, дайте мне знать, если потребуются дополнительные разъяснения.


РЕДАКТИРОВАТЬ : Использование Request.Form("searchbox") дает Nothing. Я проверил объект Request.Form() и обнаружил, что идентификатор моего текстового поля на самом деле ctl00$searchbox. Использование этого в качестве идентификатора или его индекса (в данном случае 3) дает мне правильный результат. Было бы лучше переписать функцию, чтобы проверить все ключи в Request.Form() для ключей, содержащих searchbox, или есть способ, которым я могу получить фактический идентификатор текстового поля? Для первого варианта это то, что я придумал:

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 Ответ

2 голосов
/ 03 ноября 2008

Для того, чтобы значение было загружено на страницу внутри элемента управления, вы должны находиться внутри обратной передачи, поэтому причина работает при публикации со страницы поиска.

Чтобы получить значение, когда входные данные поступают из других областей, вам нужно будет использовать Request.Form ("Элемент"), чтобы получить значение из опубликованной формы. Если вам нужен именно этот путь, просто убедитесь, что вы знаете идентификатор окна поиска, и с вами все будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...