0

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

4

5 回答 5

5

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

例如:

<input id="txtSearchKey" type="text" name="txtSearchKey" />
于 2009-09-08T10:43:55.227 回答
0

只是不要在 Request.form 之后使用 .toString() ......之后它不会给出空引用。

于 2013-02-27T19:12:21.290 回答
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;
}

有关详细信息,请参阅TextBox 控件的快速入门示例

于 2009-09-08T12:08:46.667 回答
0

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

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

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

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

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

于 2009-09-08T10:24:23.723 回答
0

你有什么理由不使用

形式 runat="服务器"

然后在此表单中拖动一个 TextField 和一个 Button。然后双击按钮并编写您想要的代码。

如果你想按照自己的方式做,你需要给你的 sa name="txtMySearchKey" 让它工作

于 2009-09-08T10:51:20.687 回答