24

次の構文を使用してjqueryでページメソッドを呼び出すことができることを知っています

$.ajax({
  type: "POST",
  url: "Default.aspx/GetDate",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Replace the div's content with the page method's return.
    $("#Result").text(msg.d);
  }
});

これはaspxページでは機能しますが、 ascxページでは可能ですか? (Web コントロール)

私はそれを約30分間試してきましたが、うまくいかないので、それが可能かどうか疑問に思っています.

注:明確にするために、ascxページを呼び出そうとすると、jqueryでURLを更新しています:)

4

8 に答える 8

27

いいえ、ascx コントロールは、クライアント マシンからアクセスできる実際の URL を表していないためです。それらは、他のページに埋め込むことを意図した純粋なサーバー側です。

あなたがやりたいことは、現在 ascx ファイルにあるのと同じ html のスニペットを提供する aspx ページを持つことです。aspx ページは必ずしも完全な html ドキュメント (<html><body> など) を提供する必要はなく、関心のあるユーザー コントロールをレンダリングするだけでかまいません。

この手法は、テーブル コンテンツのコールバック URL を必要とする ingrid プラグインで常に使用されます。

于 2009-02-23T19:45:21.307 に答える
4

ascx ファイルを直接要求すること、つまり $.ajax(..) の URL パラメータとして "MyControl.ascx" を指定することでは、それが可能だとは思いません。ascx ファイルは Web サーバーによって直接公開されません。

ユーザー コントロールを含む aspx ページの URL を指定できると思います。つまり、MyControl.ascx のインスタンスが MyPage.aspx に存在する場合、url パラメータとして「MyPage.aspx」を指定する必要があります。ただし、それはあなたが達成しようとしている目的を無効にする可能性があるように思えます。

編集:クライドが以下で言ったことは良い考えのようです. クライアント側のスクリプトからのアクセスのためにそれをホストすることだけが多かれ少なかれ仕事であるページにascxコントロールを含めることで、私は自分自身で同様のことをしています。

于 2009-02-23T19:43:20.937 に答える
2

コントロールからの情報で必要なことを行うメソッドを .aspx ページに作成するのはどうですか? コントロールに含まれているものと含まれていないものについて、人々が何度も何度も行ったり来たりしていることは知っていますが、コントロールにプロパティとオブジェクトしか含まれていない場合は、.aspx ページに関数を配置するとうまくいくと思います。明らかに、多くのトレードオフがあります。

于 2009-02-23T19:51:46.047 に答える
2

ASPX ページで Page メソッド (ScriptMethod) しか使用できないという制限を回避する方法を次に示します。この例では、ページの基本クラスと特殊な属性を使用してプロキシを構築し、ASCX ページのコード ビハインドでメソッドを装飾し、クライアント経由でアクセスできるようにします。

AJAX、JSON、基本クラス、およびリフレクションを使用して、ASCX ユーザー コントロール内に Page メソッド (ScriptMethod) を作成する

于 2009-11-05T03:29:50.173 に答える
2

ユーザーコントロールは外部(ページ外)からアクセスできるように意図されていないため、それが可能になるとは思いません。スクリプト サービス (Web サービス) を使用することをお勧めします。

于 2009-02-23T19:43:13.277 に答える
1

コントロールをロードし、レンダリングされたHTMLを応答に書き込むジェネリックハンドラー(.ashx)を作成します。

于 2009-02-24T01:46:56.147 に答える
0

メソッド GetDate() を Default.aspx または他の aspx ファイルに記述でき、そのメソッドを .ASCX FILEから呼び出すことができます。

元:

UserControl.ascx:

$.ajax({
 type: "POST",
 url: "Default.aspx/GetDate",
 data: "{}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function(msg) {
 // Replace the div's content with the page method's return.
 $("#Result").text(msg.d);
}

});

Default.aspx.cs:

Public void GetDate() //Public static void { //your code here }

于 2014-05-30T16:50:47.113 に答える