ASP.Net中的Form和QueryStrings

时间:2011-08-12 19:09:18

标签: c# asp.net forms query-string

我在home.aspx上有一个表格就是这样:

                    <form name="search" method="post" action="searchresults.aspx" id="searchform" runat="server">
                        <div class="searchField">
                            <input name="keywords" type="text" id="keywordSearch" value="Enter keywords" class="watermark" />
                        </div><!--end searchField-->
                        <div class="advanceSearchBox">
                            <p><b>Narrow results by:</b></p>

                            <asp:Literal ID="ltrlPopulation" runat="server" />

                            <asp:Literal ID="ltrlDatasource" runat="server" />  

                        </div><!--end advanceSearchBox-->
                        <div style="float: right; margin-right: 2px;">
                            <asp:ImageButton ImageUrl="images/go_up.png" AlternateText="GO" Width="34" Height="24" id="keywordSearchGO" runat="server" />
                        </div>
                    </form>

在我的searchresults.aspx.cs页面上,我有这个QueryString但它总是空的:

 Response.Write(Request.QueryString["keywords"]);

我忘记了什么吗?

4 个答案:

答案 0 :(得分:3)

那是因为QueryString用于GET个请求,而不是POST。您希望将Request.Form用于发布的数据。

Response.Write(Request.Form["keywords"]); 

阅读Request.Form Collection here的更多文档。

答案 1 :(得分:3)

您可以将初始表单标记更改为:

<form name="search" method="get" action="searchresults.aspx" id="searchform" runat="server">

如果你真的想出于某种原因使用查询字符串。

答案 2 :(得分:2)

帖子不会生成查询字符串。要访问帖子数据,您需要通过Form或Params属性来执行此操作。

Request.Form["keywords"];
Request.Params["keywords"];

答案 3 :(得分:1)

您要发布到searchresults.aspx,因此您需要通过Request.Form或Request.Params访问已发布的变量。

string keyWords = Request.Form["keywords"];

OR

string keyWords = Request.Params["keywords"];