Как вы добавляете аргументы в PostBackUrl кнопки ASP?

StackOverflow https://stackoverflow.com/questions/204733

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Если у вас на кнопке установлен 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

Другие советы

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

Вы также могли бы использовать некоторый JavaScript для достижения этой цели, перехватывая событие нажатия клавиши Enter в поле textbox.Вы могли бы расширить это поле, чтобы также выполнить проверку текста в текстовом поле.(В этом примере используется 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;
        }
    });
});

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

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>

Я понятия не имею, почему вы получили нулевую ссылку в этом коде, учитывая мое незнание 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>

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top