Question

I have a website where i want to implement search functionality.So i added the below code to have a search box in my html page

   <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, I want to read the value user has entered in the txtSearchKey text box. What is the ideal way to do this ? I used

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

But it throw a null reference exception . Please advice

I dont want to have all pages in ASP.NET.I want to have only the result page as ASP.NET

Thanks in advance

Was it helpful?

Solution

Could be because you do not have a NAME attribute on the textbox field. That's the value that is used as the key in the Request.Form collection. An input field without a name attribute will not be submitted, I think.

e.g.:

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

OTHER TIPS

You can get your txtSearchKey field by this :

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

But, instead of using form action to forward your search to another page, you can use a button with PostBackUrl property like that :

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

Because in ASP.NET, to have more then one form is not allowed.

Is there any reason you don't use

form runat="server"

and then drag a TextField and a Button in this form. Then doubleclick the button and write code you want.

If you want to do it your way you need to give your s a name="txtMySearchKey" for it to work

The way you are going about things is not really the way you work in ASP.NET web forms. The preferred way is to use asp.net server controls and events to abstract the process you are trying to achieve. For instance, your form should really be something like this (note the runat="server" attribute that enables you to reference the controls programmatically):

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

Then, in your code behind you would handle the ButtonSubmit_Click event like this to enable you to get the value from the TxtSearchKey textbox:

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

See the Quickstart example for the TextBox control for more info.

Just do not use .toString() after the Request.form... it will not give a null reference after that.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top