YoはHttpContext.Current静的クラスを使用できますが、メソッドで使用するパラメーターを宣言し、AJAX呼び出しでパラメーターを渡す場合は、それをスキップできます。
パラメータをメソッドに直接渡す必要があります。
Githubリポジトリにいくつかの実用的な例があります。コードを自由に参照してください。
要約すると、PageMethodを呼び出すには:
注:AJAXを使用する方法と、jobIDPageMethodパラメーターがリクエストとともに渡される方法、およびPageMethod内で透過的に使用される方法
AJAX呼び出し
$.ajax({
type: 'POST',
url: '<%: this.ResolveClientUrl("~/Topics/JQuery/Ajax/PageMethods_JQueryAJAX.aspx/GetEmployees") %>',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: '{"jobID" : ' + jobID +'}',
async: false,
cache: false,
success: function (data) {
$('#employees').find('option').remove();
$.each(data.d, function (i, item) {
$('<option />').val(item.EmployeeID).text(item.FirstName).appendTo('#employees');
});
},
error: function (xhr) {
alert(xhr.responseText);
}
});
ページ方式
[WebMethod]
public static List<EmployeeModel> GetEmployees(int jobID)
{
var ctx = new PubsDataContext();
return (from e in ctx.employee
where e.job_id == jobID
orderby e.fname
select new EmployeeModel
{
EmployeeID = e.emp_id,
FirstName = e.fname
}).ToList();
}