2

できるだけ少ない手順で説明しようとしています。Pag​​e1.aspxには多くのコントロールがあり、その中に [プレビュー] ボタンと [保存] ボタンがあります。また、プレビュー ボタン クリックのリダイレクト ターゲットであるPage2.aspxもあります。

Page2 にプレビューを描画するには、Page1 からすべてのコントロールを選択する必要があるため、リダイレクトは Preview's を設定して行われますPostBackUrl。また、新しいタブまたはウィンドウにプレビューを表示する必要があるためonClientClick="aspnetForm.target='_blank'"、プレビュー ボタンの定義に使用しました。

データをデータベースに保存した後、ボタン クリック コールバックを保存すると、一部の Page0.aspx (レポートの初期リスト - コードの主題) にリダイレクトされます。

プレビュー ボタンは正常に動作します - プレビューは新しいタブでレンダリングされますが、古いタブに移動して [保存] をクリックすると、デバッガーから、最初に Page2.aspx(?) と 2 番目に Page1.aspx が読み込まれていることがわかります。次に、すべてのデータが db に格納されますが、Page0 リダイレクトが実行されても、Page1.aspx はブラウザーに読み込まれたままになります。

この背後にあるプロセスはわかりません。知っている人は私に洞察を与えることができますか?または、私のアプローチを実装するのは不可能だと思うなら、同じことをする方法を教えてください。

重要な場合は、Page1 のすべてが更新パネルにあります。

返信ありがとうございます

4

1 に答える 1

2

ASP.NET では、基本的に、あるページから別のページにフォーム データを送信する状況はゼロ (0) です。何を達成しようとしているのかは明確ではありませんが、次のいくつかを考慮することができます。

  • 固有の操作/システムを 1 つのページに分離します。ユーザー プロファイルのようなものがある場合は、3 つの異なる aspx ページを作成しないでください。ユーザーまたは管理者がそのデータ/機能を管理するために単一のページを使用するだけです。ポストバック イベントはあなたの味方です。
  • ViewState と従来のフォーム データの違いを理解します。あるページから別のページにフォーム データを投稿しようとしている場合、おそらく ViewState のポイントを理解していないのではないでしょうか。1 つのページを使用して、ユーザーが現在作業している一時データを維持することは、ViewState の優れた用途です。データを別のページに表示する場合は、前のページのデータを最終的なものと見なす必要があるため、データベースまたはその他の媒体に保存する必要があります。

これらは一般的なガイドラインにすぎません。「あなたのやり方は間違っている」などの一般的なことを言わなければ、問題に対する正確な答えはないからです。ある aspx ページから別のページにフォーム データを投稿することを二度と試みないことから始めることをお勧めします。

于 2012-11-06T08:50:39.317 に答える