26

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"

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

4

6 に答える 6

41

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

<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();
});
于 2012-10-31T16:49:49.583 に答える
9

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

 @using (Html.BeginForm("ActionName","ControllerName", FormMethod.Post, new { id = "filterform" })){
于 2013-12-16T23:22:38.837 に答える
8

隠し入力を入れてみませんか

<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();

}
于 2012-10-31T16:49:27.573 に答える
4

フォーム内にいる場合は、ボタン要素にルートを追加できます。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>

于 2016-06-24T02:27:26.440 に答える
0

こんにちは私はこれが非常にうまくいくことを発見しました

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

パラメータの前に「FormMethod.Post」を実行するのに疲れていましたが、機能せず、値を渡しませんでした。試行錯誤の末、なんとか解決でき、投稿したコードのようになるはずだと思いました。

お役に立てば幸い

于 2018-02-08T08:21:25.327 に答える
0

同じフォームに複数の送信ボタンがあり、それぞれに異なるパラメーターを渡す必要がある場合は、asp-route属性を使用してこのタスクを実行できます。

 <input type="submit" value="Save"/>

 <input id="btnComplete" type="submit"
        asp-route-addNewOneAfterSave="@true"
        value="Save And Create New One">

たとえば、OnPostメソッドにパラメータを含めることを忘れないでください。

public async Task<IActionResult> OnPostAsync(bool? addNewOneAfterSave)
        {
             //Your code ....
        }

この記事から、asp-routeアンカータグヘルパーの詳細を読むことができます。

于 2020-02-01T08:03:15.733 に答える