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"
_
アクションを変更してこの追加パラメーターを渡すにはどうすればよいですか?これをすべて行う完全に良い方法はありますか?
フォームアクションにクエリ文字列パラメーターを追加し、実行時にそれを変更しようとするのは難しい(不可能ではない)。隠しフィールドを使用する方がはるかに簡単です:
<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();
});
隠し入力を入れるのはどうですか
<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();
}
これは問題ではないと言っていましたが、次のようにHtml.BeginForm
に属性を追加できます。
@using (Html.BeginForm("ActionName","ControllerName", FormMethod.Post, new { id = "filterform" })){
フォーム内にいる場合は、ボタン要素にルートを追加できます。 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>
こんにちは、私はこれが非常にうまくいくことがわかりました
@using (Html.BeginForm("ActionName","ControllerName", new { id = "filterform" },FormMethod.Post)){
パラメーターの前に 'FormMethod.Post'を実行するのはうんざりしていましたが、機能せず、値を渡すことはありませんでした。試行錯誤を経て初めて問題を解決し、投稿したコードのようなものであることがわかりました。
役立つことを願っています