web-dev-qa-db-ja.com

フォーム送信に追加のパラメーターを追加する

Razorビューにフォーム宣言があります

_<form method="post" action="/Lot/LotList?auctionEventId=@auctionEventId" id="filterForm">
_

(ちなみに、私は_Html.BeginFrom_を使用するのではなく、このように書き出すことを選択しました。IDを与える必要があり、_Html.BeginFrom_でそれを行う方法を知らなかったからです-しかし、それはここの問題ではありません)

このフォームの外側には、このフォームを送信するボタンがあります(フォームには送信ボタンもあります)

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

今、問題は、このボタンを使用してフォームを送信する場合、フォームのアクションを次のように変更することです

_action="/Lot/LotList?auctionEventId=@auctionEventId&showAll=true"
_

アクションを変更してこの追加パラメーターを渡すにはどうすればよいですか?これをすべて行う完全に良い方法はありますか?

20
Sachin Kainth

フォームアクションにクエリ文字列パラメーターを追加し、実行時にそれを変更しようとするのは難しい(不可能ではない)。隠しフィールドを使用する方がはるかに簡単です:

<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" />
  ...

そして、showAllボタンにjqueryイベントを接続するだけです。

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

jQuery:

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

隠し入力を入れるのはどうですか

<form method="post" action="/Lot/LotList?auctionEventId=@auctionEventId" id="filterForm">

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

あなたのボタンに

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

スクリプトのどこかに

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

}
5
Albert Oclarit

これは問題ではないと言っていましたが、次のようにHtml.BeginFormに属性を追加できます。

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

フォーム内にいる場合は、ボタン要素にルートを追加できます。 formActionおよびformMethodを使用して、フォームのネイティブアクションをオーバーライドできます。他のformActionsおよびformMethodsで複数のボタンを使用することもできます

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


    <button formaction="/Lot/LotList?auctionEventId=@auctionEventId&showAll=true" formmethod="post">Show All</button>
</form>
4
Brandon

こんにちは、私はこれが非常にうまくいくことがわかりました

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

パラメーターの前に 'FormMethod.Post'を実行するのはうんざりしていましたが、機能せず、値を渡すことはありませんでした。試行錯誤を経て初めて問題を解決し、投稿したコードのようなものであることがわかりました。

役立つことを願っています

0