0

ASP.netMVCアプリケーションに1つのビューと1つのコントローラーがあります。

ビューに1つの[送信]ボタンと1つの[キャンセル]ボタンがあります。

以下のボタンのいずれかをクリックすると、アクションがトリガーされます。

AcceptVerbs(HttpVerbs.Post)

public ActionResult Result()

{{

}

ここで問題となるのは、「送信」または「キャンセル」のどちらが原因でポストバックが発生したかを、パブリックActionResult Result()でどのように知るかです。

4

4 に答える 4

0

答えてくれてありがとう。私が得たもう1つの解決策は、

public ActionResult Result()
    {
        if (Request.Params.ToString().IndexOf("btnSubmit") > 0)
            //
        else
            //
    }
于 2009-11-03T11:41:06.650 に答える
0

あなたは次のように試すことができます

function OnBeginRequest(sender, args) {
        var postBackElement = args.get_postBackElement();
if ((postBackElement.id == '<%= btnSave.ClientID %>')
  {

  }
}
于 2009-11-03T09:26:54.613 に答える
0

「キャンセル」ボタンでフォームを送信しないことをお勧めします。これを処理する方法はいくつかありますが、最も簡単な方法は、前のページに戻るボタンに JavaScript の onclick イベントを設定することです。( history.go(-1)) それがニーズに合わない場合は、ナビゲートする特定のルートを指定することもできます。最も複雑なのは、クライアント側でクリックをインターセプトし、ヒットするルートを決定することですが、通常、フォームに複数の送信ボタンを配置して異なるアクションをヒットさせたい場合にのみ行います。これはかなりまれな状況です。

于 2009-11-03T12:08:58.680 に答える
0

次の手順で問題を解決できます。

私。ビューのフォームに「キャンセル」という隠しフィールドを配置します。デフォルト値のfalseを指定します。

ii. キャンセル ボタンの onclick イベントに、次のスクリプトを追加します。

document.getElementById('cancel').value = true; document.getElementById('myForm').submit();

「myForm」をフォームの名前に変更します。

iii. Result() のメソッド シグネチャを次のように変更します。

public ActionResult Result(bool cancel)

モデル バインドにより、非表示フィールド 'cancel' の値にアクション メソッドのシグネチャでアクセスできるようになります。

于 2009-11-03T09:21:40.457 に答える