我有一个网站,我想实现搜索功能。所以我添加了以下代码,在我的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
提前致谢
答案 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()...之后它不会给出空引用。