3

ページのコードビハインドでPostBackUrlのアクションを取得できますか?

データベースを更新してから、値を非表示フィールドとして別のURLにポストバックするonclick関数を呼び出したいと思います。

4

4 に答える 4

3

server.Transfer を使用しますが、隠しフィールドは非常に安全ではありません。それでは、その場所で (そして、既に server.transfer を使用しているので) Context.Items を使用しないのはなぜですか? オブジェクト全体を転送できます。例:これは元のページにあります-

Context.Items.Add("Contact", contactID)
        Server.Transfer("~/ViewContact.aspx")

結果のページであなたがする -

Dim contactID = Context.Items.Item("Contact").ToString()

転送はサーバーで行われ、要求されたページとは異なるページであることをブラウザーに通知しないため、server.transfer を使用するときは細心の注意を払う必要があります。これは、予期しない場合にポストバックを実行しようとすると、問題が発生する可能性があります。

実はこの件についてブログを書いていたのですが…

Server.Transfer の例

于 2011-06-30T14:29:15.603 に答える
2

ポストバックしたいすべての入力を含む単純な白いページをフォーム内に作成し、javascript を使用してポストバックします。

問題は、ユーザーが JavaScript を有効にしていない場合です。その場合、この白いシンプルなページに、このページは数秒で他のページに自動的にリダイレクトするか、ここをクリックして今すぐリダイレクトすることをユーザーに伝えるメッセージが含まれています。 .

この単純な白いページは、クリック後に通常のページを上書きしただけです。

ソースコードと例を使用して、フォームデータを別の URLに投稿する同様のトリックであるこの投稿を読むこともできます。

また、asp.net Web ページ間で値を渡す方法は他にもたくさんあります。

これは通常、支払いゲートウェイ プロバイダーがあり、ページからそのゲートウェイ (たとえば、paypal) に転送するために勝った場合です。もう1つの解決策は、次のページに送信したいものの要約を含むページを作成し、そのページにすべてのデータ、要約、およびゲートウェイへの通常の投稿を含めることです。

ボタンがクリックされたときに関数を (コード ビハインドで) 実行する必要があります。その機能が終了したら、コードビハインドをhiddenfield値を持つ別のページに投稿したい

関数が終了すると、別のページに戻ることはできません。できることは、他のページに送信する必要がある非表示の入力としてデータを含む単純なフォームをページにレンダリングし、レンダリングしたこの新しいフォームを自動投稿することです。

protected void Button1_Click(object sender, EventArgs e)
{
   // ...you calculations here...

    StringBuilder sbRenderOnMe = new StringBuilder();

    // the form and the data
    sbRenderOnMe.AppendFormat(
    "<html><body><form action=\"http://www.google.com\" method=\"post\" name=\"form1\">"
         + "<input value=\"{0}\" id=\"lst-Send1\" name=\"Send1\" type=\"hidden\" />"
         + "<input type=\"submit\" name=\"Button1\" value=\"press me if not automatically redirect\" id=\"Button1\" />"
     + "</form>"
     , 1100
    );

    // the auto submit
    sbRenderOnMe.AppendFormat("<script>document.form1.submit();</script>");       
    sbRenderOnMe.AppendFormat("</body></html>");

    Response.Write(sbRenderOnMe.ToString());
    Response.End();
}

小さなちらつきがあり、javascriptがないと自動的に機能しない唯一のマイナスは、ボタンを押すようにユーザーに言う必要があります.

于 2011-06-30T13:32:54.210 に答える
0

元のコード ビハインド イベントの処理が完了したら、Server.Transferを使用して、フォーム変数とクエリ文字列変数を保持できます。

Server.Transfer("OtherPage.aspx", true);
于 2011-06-30T13:38:48.330 に答える