Как добавить аргументы к кнопке ASP PostBackUrl? - PullRequest
3 голосов
/ 15 октября 2008

Сейчас я создаю страницу поиска с текстовым полем и кнопкой, и, возможно, выпадающим списком для фильтрации результатов позже. У меня установлена ​​кнопка PostBackUrl моей страницы поиска (~ / search.aspx). Есть ли простой способ передать значение в текстовом поле на страницу поиска?

Ответы [ 6 ]

5 голосов
/ 15 октября 2008

Если на вашей кнопке установлен PostBackUrl, то поле поиска на первой странице и любые другие поля формы на этой странице уже публикуются на странице поиска. Хитрость заключается в том, чтобы получить доступ к ним через код для вашей страницы search.aspx.

if (Page.PreviousPage != null)
{
    TextBox SourceTextBox = 
        (TextBox)Page.PreviousPage.FindControl("TextBox1");
    if (SourceTextBox != null)
    {
        Label1.Text = SourceTextBox.Text;
    }
}

Это один из способов. Также есть некоторые ярлыки, такие как использование директивы PreviousPageType вверху страницы search.aspx:

<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %> 

Более подробную информацию о том, как использовать это, а также о первом методе, можно найти здесь:

http://msdn.microsoft.com/en-us/library/ms178139.aspx

0 голосов
/ 06 мая 2012

Как насчет этого (vb, извините):

Получить значение из текстового поля с помощью codebehind и просто установить postbackurl на элемент управления следующим образом:

dim textval = SourceTextBox.text
dim myparam = "George"

searchbutton.PostBackUrl = "~/search.aspx?myparam=" & myparam

Вы можете просто вставить это в функцию, которая обрабатывает нажатие кнопки, нет?

0 голосов
/ 15 октября 2008

Я понятия не имею, почему вы получите нулевую ссылку в этом коде, без моего знания VB, но я попытаюсь внести небольшую модификацию, которую вы могли бы попробовать.

Я знаю, что FindControl возвращает тип Control .. может быть, вы можете подождать, чтобы поместить его в определенный тип.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If PreviousPage IsNot Nothing Then
      Dim txtBoxSrc As New Control
      txtBoxSrc = PreviousPage.FindControl("searchbox")
      If txtBoxSrc IsNot Nothing Then
          MsgBox((CType(txtBoxSrc, TextBox)).Text)
      End If
  End If
End Sub

<div class="gsSearch">
    <asp:TextBox ID="searchbox" runat="server"></asp:TextBox>
    <asp:Button ID="searchbutton" runat="server" Text="search" 
         UseSubmitBehavior="true" PostBackUrl="~/search.aspx" />
</div>
0 голосов
/ 15 октября 2008

Решена проблема, предыдущая страница - default.aspx, однако элемент управления не находится на этой странице. Поскольку я использую главные страницы, я должен выбрать Мастер вместо PreviousPage .

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If PreviousPage IsNot Nothing Then
      Dim txtBoxSrc As New TextBox
      txtBoxSrc = CType(Master.FindControl("searchbox"), TextBox)
      If txtBoxSrc IsNot Nothing Then
          MsgBox(txtBoxSrc.Text)
      End If
  End If
End Sub

<div class="gsSearch">
    <asp:TextBox ID="searchbox" runat="server"></asp:TextBox>
    <asp:Button ID="searchbutton" runat="server" Text="search" 
         UseSubmitBehavior="true" PostBackUrl="~/search.aspx" />
</div>
0 голосов
/ 15 октября 2008

Вы также можете использовать JavaScript для достижения этой цели, перехватывая событие нажатия клавиши Enter в поле текстового поля. Вы можете расширить это, чтобы выполнить проверку текста в текстовом поле. (В этом примере используется jQuery )

$(document).ready(function(){
    // Event Handlers to allow searching after pressing Enter key
    $("#myTextBoxID").bind("keypress", function(e){
        switch (e.keyCode){
        case (13):
            // Execute code here ...
            break;
        default:
            break;
        }
    });
});
0 голосов
/ 15 октября 2008

вы можете использовать useSubmitBehavior = "true" и поместить метод = "get" в форму. таким образом он будет использовать поведение отправки браузеров и добавит значения текстовых полей в строку запроса

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