Frage

Ich habe eine Website, wo ich suchen implementieren möchten functionality.So i die folgenden Code hinzugefügt ein Suchfeld in meinem HTML-Seite zu haben,

   <form id="search" method="post" action="Results.aspx">
    <input id="txtSearchKey" type="text" name="txtSearchKey" />
    <input id="Submit1" type="submit" value="submit" /><br />
    <br />
</form>

in results.aspx, ich mag der Wert Benutzer lesen, in dem txtSearchKey Textfeld eingegeben hat. Was ist der ideale Weg, dies zu tun? Früher habe ich

 string strKey = Request.Form["txtSearchKey"].ToString(); 

Aber es eine Null-Referenz-Exception werfen. Bitte Beratung

Ich möchte nicht haben wollen alle Seiten in ASP.NET.I haben nur die Ergebnisseite als ASP.NET

Vielen Dank im Voraus

War es hilfreich?

Lösung

Könnte sein, weil Sie nicht über einen Namen Attribut auf dem Textfeld ein. Das ist der Wert, der als Schlüssel in der Request.Form Sammlung verwendet wird. Ein Eingabefeld ohne Namensattribut wird nicht abgegeben werden, denke ich.

z.B .:

<input id="txtSearchKey" type="text" name="txtSearchKey" />

Andere Tipps

Sie können Ihre txtSearchKey Feld durch diese:

string strKey = PreviousPage.Request.Form["txtSearchKey"].ToString();

Aber anstatt Form Aktion mit Ihrer Suche auf eine andere Seite weitergeleitet werden, Sie auf eine Schaltfläche mit PostBackUrl Eigenschaft wie das verwenden können:

<asp:Button runat="server" ID="btnSearch" PostBackUrl="Search.aspx" />

Da in ASP.NET, hat mehr als eine Form ist nicht erlaubt.

Gibt es einen Grund, warum Sie nicht

verwenden Sie

form runat = "server"

und ziehen Sie dann ein Textfield und ein Knopf in dieser Form. Dann doppelklicken Sie auf die Schaltfläche und schreiben Code, den Sie möchten.

Wenn Sie wollen, es zu tun, um Ihre Art und Weise müssen Sie Ihre s einen Namen geben = „txtMySearchKey“ für sie zu arbeiten

Die Art und Weise Sie die Dinge laufen ist nicht wirklich so, wie Sie in ASP.NET Web-Formulare arbeiten. Der bevorzugte Weg ist asp.net Server-Steuerelemente und Ereignisse zu abstrahieren den Prozess, den Sie versuchen zu erreichen, zu verwenden. Zum Beispiel sollte das Formular wirklich so etwas wie diese (man beachte die runat = „server“ -Attribut, dass Sie die Steuerelemente programmatisch verweisen ermöglicht):

<form id="form1" runat="server">
    <div>
        <asp:Panel ID="PanelSearch" runat="server" DefaultButton="ButtonSubmit">
            <asp:TextBox ID="TxtSearchKey" runat="server" /><br />
            <asp:Button ID="ButtonSubmit" Text="Submit" runat="server" 
                onclick="ButtonSubmit_Click" /><br />
        </asp:Panel>
    </div>
</form>

in Ihrem Code dann hinter dir die ButtonSubmit_Click Veranstaltung wie diese handhaben würde, damit Sie den Wert aus dem TxtSearchKey Textbox bekommen:

protected void ButtonSubmit_Click(object sender, EventArgs e)
{
    string strKey = TxtSearchKey.Text;
}

Sehen Sie das Quickstart Beispiel für das TextBox-Steuerelement für weitere Informationen.

Nur nicht verwenden .toString () nach dem request.form ... es wird keine Nullreferenz danach geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top