__DoPostBack を使用して HTML を生成するサーバー側メソッドを呼び出したいのですが、ページに非表示の ASP runat サーバー コントロールが必要ないため、トリガーするコントロールの名前ではなく、その名前でサーバー側メソッドを呼び出すことができますか? ?
5 に答える
この質問を見るたびに、質問者がポストバックを引き起こすことのすべての意味を完全に理解していないことに少し神経質になるので、簡単に説明したいと思います。
- ブラウザの現在の DOM インスタンスは破棄されます。ブラウザに関する限り、現在のページを送信し、完全な新しいページを要求しています。
- 問題のサーバー側メソッドが実行されるだけでなく、必要なデータ バインディングやページの読み込み/初期化コードを含む、残りのページ ライフサイクル全体も実行されます。それはすべて最初から再レンダリングされます。
それは本当にあなたがしたいことですか?
Joel が述べたように、そのようなポストバックをオーバーライドする意図しない動作が発生する可能性があります。何が起こっているのかを完全に理解していれば、何も問題はありません。
あなたが本当に望んでいるのはWebMethod
. これにより、ページはそのまま維持されますが、特定のサーバー側メソッドを呼び出すことができます。
public partial class _Default : Page
{
[WebMethod]
public static string GetDate()
{
return DateTime.Now.ToString();
}
}
runatserverボタンをクリックすると同じことが起こり、すべてのページが再びレンダリングされます。
コントロールの名前をパラメーターとして __DoPostBack JavaScript 関数を呼び出しました。ボタンまたはリンクボタンをクリックすると、同じように機能します。
ASP.Net が AJAX 機能または別の用語のコールバックを処理するさまざまな方法を調べてください。これは、あなたがやろうとしていることのようです。メソッドはページ内またはコントロール内に存在する必要があります。ページ上で同じコントロールを何度も繰り返す可能性があるため、どのボタンがクリックされたかを識別するために、そのコントロールの ID が存在する必要があります。