Wie fügen Sie Argumente an eine ASP-Taste PostBackUrl?
Frage
Ich bin eine Suchseite mit einem Textfeld Bau und einem Knopf für jetzt und wahrscheinlich ein Drop-Down-Ergebnisse filtern später. Ich habe meine Schaltfläche PostBackUrl meine Suchseite eingestellt (~ / search.aspx). Gibt es einen einfachen Weg, um den Wert in dem Textfeld auf die Suchseite?
passierenLösung
Wenn Sie die PostBackUrl Satz auf Ihrem Knopf, dann das Suchfeld Feld auf der ersten Seite, und alle anderen Formularfelder auf dieser Seite, sind bereits zu Ihrer Suche Seite veröffentlicht werden. Der Trick ist immer der Zugang zu ihnen in dem Code-Behind für Ihre search.aspx Seite.
if (Page.PreviousPage != null)
{
TextBox SourceTextBox =
(TextBox)Page.PreviousPage.FindControl("TextBox1");
if (SourceTextBox != null)
{
Label1.Text = SourceTextBox.Text;
}
}
Das ist ein Weg. Es gibt einige Verknüpfungen zu, wie die PreviousPageType Direktive an der Spitze Ihrer search.aspx Seite mit:
<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %>
Weitere Informationen darüber, wie das nutzen, sowie die erste Methode, finden Sie hier:
Andere Tipps
können Sie in der Lage sein useSubmitBehavior = „true“ zu verwenden, und ein Verfahren setzen = „get“ auf dem Formular. auf diese Weise wird es den Browser einreicht Verhalten verwenden und die Werte der Textbox das auf den Query-String
anhängeSie können auch einige JavaScript verwenden, um dies zu erreichen, indem die Enter-Taste Tastendruckereignis in der Textbox Feld zu kontrollieren. Sie könnten dies erweitern als auch die Validierung des Textes in der Textbox auszuführen. (Dieses Beispiel wird unter Verwendung von 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;
}
});
});
das Problem gelöst, die vorherige Seite „default.aspx“, aber die Steuerung nicht auf dieser Seite nicht aufzuhalten. Da ich Masterseiten verwenden, muss ich wählen Master statt 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>
Ich habe keine Ahnung, warum Sie einen NULL-Verweis in diesem Code, bloß mit meinem VB Nicht-Wissen bekommen würde, aber ich werde versuchen, eine leichte Modifikation machen Sie zu versuchen, der Lage sein könnten.
Ich weiß, dass die Findcontrol den Typ Steuerung kehrt .. vielleicht können Sie es in eine bestimmte Art zu boxen warten.
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>
Was ist, diese (vb, sorry):
Gibt den Wert aus dem Textfeld über Code-Behind, und einfach die PostBackUrl setzen auf die Steuerung wie folgt aus:
dim textval = SourceTextBox.text
dim myparam = "George"
searchbutton.PostBackUrl = "~/search.aspx?myparam=" & myparam
Sie können nur, dass in der Funktion gesetzt, die die Schaltfläche klicken Griffe, nicht wahr?