Добавление дополнительного параметра в форму 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>