Добавление дополнительного параметра в форму submit

У меня есть объявление формы в представлении Razor

<form method="post" action="/Lot/[email protected]" id="filterForm">

(Кстати, я решил написать это так, а не использовать Html.BeginFrom, потому что мне нужно было дать ему идентификатор и не знал, как это сделать с Html.BeginFrom), но это не проблема)

За пределами этой формы у меня есть кнопка, которая отправляет эту форму (есть кнопка отправки в форме)

<input type="button" onclick="$('#filterForm').submit();" value="Show all" />

Теперь проблема заключается в том, что если эта кнопка используется для отправки формы, я хочу, чтобы действие в форме изменилось на

action="/Lot/[email protected]&showAll=true"

Как мне изменить действие и передать этот дополнительный параметр? Есть ли лучший способ сделать все это?

Ответы

Ответ 1

Добавление параметров строки запроса в действие формы и попытка изменить это во время выполнения сложны (но не невозможны). Намного проще использовать скрытые поля:

<form method="post" action="/Lot/LotList" id="filterForm">
  <input type="hidden" name="auctionEventId" value="@auctionEventId" />
  ...

Итак, теперь все, что вам нужно сделать, это добавить еще одно скрытое поле для "showAll"

<form method="post" action="/Lot/LotList" id="filterForm">
  <input type="hidden" name="auctionEventId" value="@auctionEventId" />
  <input type="hidden" name="showAll" value="false" id="showAllField" />
  ...

И просто подключите событие jquery на кнопку showAll:

<input id="showAllButton" type="button"/>

JQuery

$('#showAllButton').click(function(){
     $('#showAllField').val("true");
     $('#filterForm').submit();
});

Ответ 2

как насчет ввода скрытого ввода

<form method="post" action="/Lot/[email protected]" id="filterForm">

<input type="hidden" id="showAll" name="showAll" value=""/>

на вашей кнопке

<input type="button" onclick="submitForm()" value="Show all" />

на script где-нибудь

function submitForm(){
$('#showAll').val('true');
$('#filterForm').submit();

}

Ответ 3

Я знаю, что вы сказали, что это не проблема, но вы можете добавить атрибуты к Html.BeginForm следующим образом:

 @using (Html.BeginForm("ActionName","ControllerName", FormMethod.Post, new { id = "filterform" })){

Ответ 4

Если вы находитесь в форме, вы можете добавить маршрут к элементу кнопки. Вы можете переопределить собственное действие формы, используя formAction и formMethod. Вы также можете иметь несколько кнопок с другими formActions и formMethods

<form action="/somewhere" method="get">
    <input type="type" name="name" value=" " />


    <button formaction="/Lot/[email protected]&showAll=true" formmethod="post">Show All</button>
</form>