1

現在、私は2つのページを持っています:

最初のページには入力フォームが含まれ、2 ページ目は Excel ドキュメントを生成します。入力フォームのボタンは、この 2 ページ目に投稿されます。

私がやりたいのは、2番目のページにも投稿する2番目のボタンを追加することです。ただし、この新しいボタンから作成されたリクエストが別の方法で動作する必要があるため、次の質問に至ります。

2ページ目から、リクエストを送信するためにどのボタンが押されたかを知る方法はありますか?

私が尋ねている主な理由は、可能であれば最初のページからの情報を解析する際に 2 ページ目のロジックを再利用したいということです。それを新しいページにコピーして、新しいボタンをそこに投稿する必要はありません。

ありがとう!

4

4 に答える 4

3

各ボタンが 2 番目のページに投稿する前に値を設定する最初のページのフォームに非表示のテキスト ボックスを作成できます。2 番目のページは、その非表示のテキスト ボックスの値を評価できます。

編集:あなたの投稿を読み直した後、あなたが達成しようとしていることを誤解していたと思います. 送信ページのどのボタンがクリックされたかを単純に特定しようとしている場合は、次のクエリ文字列を使用して実行できます。

Page1.aspx:

<asp:Button ID="Button1" Text="Button 1" PostBackUrl="~/Page2.aspx?button=1" runat="server" />
<asp:Button ID="Button2" Text="Button 2" PostBackUrl="~/Page2.aspx?button=2" runat="server" />

Page2.aspx.cs:

string sButton = "0";
if (Request.QueryString["button"] != null)
    sButton = Request.QueryString["button"];

if (sButton == "1")
    // Do button 1 stuff
else if (sButton == "2")
    // Do button 2 stuff
于 2009-07-08T16:22:08.353 に答える
0

これが純粋なHTMLであり、フォームアクション属性が2ページ目を指している場合...

同じ名前の属性と2つの異なる値の属性を持つ2つの異なる送信ボタンが必要です。いずれかのボタンをクリックすると、フォームフィールドが2ページ目に送信されます。投稿された要素の値を送信ボタンの名前で確認すると、どちらがクリックされたかがわかります。

ASP.NETについて話している場合(タイトルとタグが示すように)、ポストバックの各ボタンのサーバー側クリックイベントを処理して、どのボタンがクリックされたかを判断できます。ただし、ASP.NETフォームを2番目のページに送信するのは必ずしも簡単ではありません。 URL書き換えに関するScottGuthrieの投稿、特にフォームタグのアクション属性のオーバーライドに関する最後のセクションを参照してください。

于 2009-07-08T16:15:45.340 に答える
0

デバッグを行った後、私の最善の策は、ボタンがフォームの値に含まれているかどうかを判断することであるように見えます。

つまり

if(Request.Form["Button1ClientID"] != null)
  //button 1 stuff
else if(Request.Form["Button2ClientID"] != null)
  //button 2 stuff

誰かがこれを行うためのより良い方法を知っているなら、私に知らせてください

編集:ClientIDではなくUniqueID

于 2009-07-08T16:16:10.050 に答える
0

実際には、Request.Form でのボタンのチェックは、Button コントロールを使用している場合にのみ機能します。Request.Form に何も配置しない LinkBut​​tons を使用しているプロジェクトでこれが必要でした。ただし、次のコードを使用して、どのボタンが押されたかを判断できました。

if (Request.Form["__EVENTTARGET"] == button1.UniqueID) {
  // do button 1 stuff
} else if (Request.Form["__EVENTTARGET"] == button2.UniqueID) {
  // do button 2 stuff
}

とにかく、これらのフォーラムは非常に役立つと思うので、一度回答を投稿する必要があると思いました.

于 2011-01-14T22:50:43.620 に答える