我正在尝试创建一个简单的搜索框,其结果类似http://www.example.com/Search?s=searchTerm我有路由设置,以便它接受这样的网址,并做正确的事情。我遇到的问题是获取表单来创建查询字符串。我尝试了很多变种:
<% using (Html.BeginForm("Search", "Home", FormMethod.Get, new { ???? })) {%>
<input id="submitSearch" class="searchBox" type="text" runat="server"/>
<input type="submit" value="Search" /> <%} %>
我不确定如何设置Html.BeginForm,因此它抓取submitSearch值并将其传递给/ Search?s = valueHere。这似乎让我很容易错过。
答案 0 :(得分:10)
您需要在输入框中将name
设置为s
。
<% using (Html.BeginForm("Search", "Home", FormMethod.Get, new { })) { %>
<input id="s" name="s" class="searchBox" type="text" />
<input type="submit" value="Search" />
<% } %>
另请注意,我也将id
更改为s
,因为通常的做法是为name
和id
设置相同的值。但是,只有name
属性会影响请求中的查询字符串名称
正如David在评论中指出的那样,ASP.NET MVC中不需要runat="server"
。