我的代码很简单:
<% using(Html.BeginForm(FormMethod.Get)) %>
<% { %>
Search for in Screen Name and Email: <%: Html.TextBox("keyword", Request.QueryString["keyword"]) %>
<button type=submit>Search</button>
<% } %>
我遇到的问题是,当我提交此表单时,值不会添加到查询字符串中。相反,似乎表单是通过发布请求提交的。当我查看生成的HTML时,我有这个:
<form action="/find/AdminMember/MemberList" method="post">
Search for in Screen Name and Email: <input id="keyword" name="keyword" type="text" value="" />
<button type=submit>Search</button>
</form>
有谁知道为什么?对我来说,这看起来非常简单和直接。
答案 0 :(得分:7)
BeginForm助手的正确签名是:
<% using(Html.BeginForm("SomeAction", "SomeController", FormMethod.Get)) %>
<% { %>
Search for in Screen Name and Email:
<%: Html.TextBox("keyword", Request.QueryString["keyword"]) %>
<button type="submit">Search</button>
<% } %>
当您编写BeginForm(FormMethod.Get)
时,您基本上会调用this signature,其中routeValues
参数与FormMethod.Get
无关,并且使用POST作为默认动词。
答案 1 :(得分:3)
您将FormMethod.Get
作为routeValues
参数
您必须限定action
和controller
才能设置表单标记的FormMethod
using(Html.BeginForm("action", "controller", FormMethod.Get))
答案 2 :(得分:0)
看起来好像没有为BeginForm使用正确的重载,请检查here是否有各种重载。