Почему мой asp.net mvc формирует POSTing вместо GETting? - PullRequest
2 голосов
/ 04 января 2011

Мой код достаточно прост:

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

Кто-нибудь знает почему?Мне это кажется довольно простым и понятным.

Ответы [ 3 ]

7 голосов
/ 04 января 2011

Правильная подпись помощника 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 в качестве глагола по умолчанию.

3 голосов
/ 04 января 2011

Вы передаете FormMethod.Get как параметр routeValues

Вы должны будете квалифицировать свои action и controller, чтобы установить FormMethod тега формы

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

FormExtensions.BeginForm Метод

0 голосов
/ 04 января 2011

Похоже, что вы не используете правильную перегрузку для BeginForm, проверьте здесь для различных перегрузок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...