2008-10-15 2 views
3

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

ответ

5

Если у вас есть 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

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

+0

Не правда ли, что страница ASP может иметь только одну форму? Я помню что-то читал. Существует форма, созданная визуальной студией, которая инкапсулирует содержимое внутри тега body. – Anders 2008-10-15 13:54:11

+0

Правильно, он может иметь только одну форму, метод = get должен быть в этой форме. все поля ввода из формы будут помещены в строку запроса. это может вообще не работать, просто попробовать. – 2008-10-15 13:56:26

0

Вы также можете использовать JavaScript, чтобы выполнить это, перехватив событие Key key keypress в поле текстового поля. Вы можете расширить это, чтобы выполнить проверку текста в текстовом поле. (В этом примере используется 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

Решена проблема, предыдущая страница «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> 
0

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

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

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

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

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

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

Смежные вопросы