为什么我的 asp.net mvc 表单是 POSTing 而不是 GETting?

发布于 2024-10-10 15:24:58 字数 693 浏览 0 评论 0原文

我的代码非常简单:

    <% 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>

有人知道为什么吗?这对我来说似乎非常简单和直接。

My code is straightforward enough:

    <% using(Html.BeginForm(FormMethod.Get)) %>
    <% { %>
        Search for in Screen Name and Email: <%: Html.TextBox("keyword", Request.QueryString["keyword"]) %>
        <button type=submit>Search</button>
    <% } %>

The issue I'm running into is that when I submit this form, the values are not added to the querystring. Instead, it appears that the form is submitting by a post request. When I look at the generated HTML, I have this:

    <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>

Does anyone know why? This seems pretty simple and straighforward to me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

独孤求败 2024-10-17 15:24:59

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) 您基本上是在调用此签名 其中 routeValues 参数与 FormMethod.Get 无关,并且使用 POST 作为默认动词。

The correct signature of the BeginForm helper is this:

<% 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>
<% } %>

When you write BeginForm(FormMethod.Get) you are basically invoking this signature where the routeValues parameter has nothing to do with FormMethod.Get and which uses POST as default verb.

雨后咖啡店 2024-10-17 15:24:59

您将 FormMethod.Get 作为 routeValues 参数传递

您必须限定您的 actioncontroller 来设置表单标记的 FormMethod

using(Html.BeginForm("action", "controller", FormMethod.Get))

FormExtensions.BeginForm 方法

You're passing FormMethod.Get as the routeValues parameter

You will have to qualify your action and controller to set the FormMethod of the form tag

using(Html.BeginForm("action", "controller", FormMethod.Get))

FormExtensions.BeginForm Method

那些过往 2024-10-17 15:24:59

看起来好像您没有使用 BeginForm 的正确重载,请检查 此处了解各种重载。

Looks as if you are not using the correct overload for BeginForm, check here for the various overloads.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文