ASP.NET:在搜索表单的操作页面中读取表单变量值

时间:2009-09-08 10:20:30

标签: asp.net search form-post

我有一个网站,我想实现搜索功能。所以我添加了以下代码,在我的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中

,我想读取用户在txtSearchKey文本框中输入的值。这样做的理想方法是什么?我用了

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

但它抛出一个空引用异常。请建议

我不希望在ASP.NET中拥有所有页面。我希望只将结果页面作为ASP.NET

提前致谢

5 个答案:

答案 0 :(得分:5)

可能是因为您在文本框字段中没有 NAME 属性。这是在Request.Form集合中用作键的值。我认为不会提交没有name属性的输入字段。

例如:

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

答案 1 :(得分:0)

您可以通过以下方式获取txtSearchKey字段:

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

但是,您可以使用具有PostBackUrl属性的按钮,而不是使用表单操作将搜索转发到另一个页面:

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

因为在ASP.NET中,不允许有多个表单。

答案 2 :(得分:0)

你有没有理由不使用

表单runat =“server”

然后在此表单中拖动TextField和Button。然后双击按钮并编写所需的代码。

如果你想按自己的方式去做,你需要给你一个名字=“txtMySearchKey”让它起作用

答案 3 :(得分:0)

您处理事物的方式并不是您在ASP.NET Web表单中工作的方式。首选方法是使用asp.net服务器控件和事件来抽象您尝试实现的进程。例如,您的表单应该是这样的(注意runat =“server”属性,使您能够以编程方式引用控件):

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

然后,在您的代码中,您将处理ButtonSubmit_Click这样的事件,以便您从TxtSearchKey文本框中获取值:

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

有关详细信息,请参阅Quickstart example for the TextBox control

答案 4 :(得分:0)

请勿在Request.form之后使用.toString()...之后它不会给出空引用。