ASP.NET: lecture sous forme de valeurs variables dans la page d'action de formulaire de recherche

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

  •  21-09-2019
  •  | 
  •  

Question

J'ai un site Web où je veux mettre en œuvre la recherche functionality.So i ajouté le code ci-dessous pour avoir une boîte de recherche dans ma page html

   <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>

results.aspx, je veux lire l'utilisateur de valeur est entrée dans la zone de texte txtSearchKey. Quel est le moyen idéal pour le faire? Je

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

Mais il jette une exception de référence null. S'il vous plaît conseiller

Je ne veux pas avoir toutes les pages ASP.NET.I veulent avoir la page de résultat comme ASP.NET

Merci d'avance

Était-ce utile?

La solution

Peut-être parce que vous ne disposez pas d'un NOM attribut sur le champ de zone de texte. C'est la valeur qui est utilisée comme clé dans la collection Request.Form. Un champ d'entrée sans un attribut de nom ne sera pas soumis, je pense.

par exemple .:

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

Autres conseils

Vous pouvez obtenir votre champ txtSearchKey par ceci:

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

Mais, au lieu d'utiliser l'action de formulaire pour transmettre votre recherche à une autre page, vous pouvez utiliser un bouton avec la propriété PostBackUrl comme ça:

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

Parce que dans ASP.NET, d'avoir plus d'un formulaire n'est pas autorisée.

Y at-il raison de ne pas utiliser

forme runat = "server"

puis faites glisser un champ de texte et un bouton sous cette forme. Ensuite, le bouton et double-cliquez écrire du code que vous voulez.

Si vous voulez le faire votre chemin, vous devez donner votre nom d = « txtMySearchKey » pour que cela fonctionne

La façon dont vous allez sur les choses n'est pas vraiment la façon dont vous travaillez dans les formulaires Web ASP.NET. Le meilleur moyen est d'utiliser les contrôles serveur asp.net et événements abstraire le processus que vous essayez d'atteindre. Par exemple, votre formulaire doit vraiment être quelque chose comme ceci (notez l'attribut runat = « server » qui vous permet de référencer les contrôles) par programme:

<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>

Ensuite, dans votre code derrière vous gérer l'événement ButtonSubmit_Click comme celui-ci pour vous permettre d'obtenir la valeur de la zone de texte TxtSearchKey:

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

Voir la Quickstart exemple pour le contrôle de la zone de texte pour plus d'informations.

Il suffit de ne pas utiliser .toString () après la Request.Form ... il ne donnera pas une référence null après.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top