引用符
オーバーライドされたメソッドのページを最適化したいのですが、このページメソッドでどのようなデータを取得できますか。これに関して私を助けることができる体はありますか?
PageMethods は、[WebMethod]
および[ScriptMethod]
属性で装飾されたコード ビハインドの静的メソッドです (実際に[ScriptMethod]
は、ASP.NET によって生成された jjavascript プロキシを使用して PageMethod を呼び出していない場合、この属性は必要ありません。ページメソッド)。これらは、任意の複雑な .NET オブジェクトを入力および出力として受け取ることができます。シリアル化メカニズムとして JSON を使用します。
Web フォームの分離コードで定義された PageMethod の例を見てみましょう。
[WebMethod]
[ScriptMethod]
public static User[] FindUsers(User criteria)
{
... do some filtering on the criteria and return a User array with the results
}
User クラスは次のようになります。
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
クライアント側では、組み込みの Microsoft AJAX フレームワークを使用してこの PageMethod を呼び出すことができます。このフレームワークは、型指定された JavaScript プロキシを自動的に生成して PageMethod を呼び出します。
var criteria = { FirstName: 'john', LastName: 'smith' };
PageMethods.FindUsers(criteria, function(users) {
// success => you could directly use the "users" variable here
// that will represent the result returned by your page method
// for example
for (var i = 0; i < users.length; i++) {
alert(users[i].FirstName);
}
}, function() {
// failure
});
このプロキシを生成するには、PageMethod を[ScriptMethod]
属性で装飾する必要があります。
自動生成された JavaScript プロキシを使用する代わりに、jQuery を使用して PageMethod を呼び出すこともできます。
var criteria = { FirstName: 'john', LastName: 'smith' };
$.ajax({
type: 'POST',
url: 'PageName.aspx/FindUsers',
data: JSON.stringify(criteria: criteria),
contentType: 'application/json; charset=utf-8',
success: function(result) {
// success => you need to use "result.d" to access the actual object
// that was returned by the PageMethod
var users = result.d;
for (var i = 0; i < users.length; i++) {
alert(users[i].FirstName);
}
},
error: function() {
// failure
}
});
プロキシを使用せずに JavaScript で PageMethod を直接呼び出す場合、PageMethod を[ScriptMethod]
属性で装飾する必要はありません。このプロキシは使用していないため気にしないためです。