你可以使用HttpContext.Current
静态类,但是如果你在你的方法上声明你想要使用的参数,你可以跳过它,只需通过你的 AJAX 调用传递参数
您应该将参数直接传递给该方法。
我的 Github 存储库中有几个工作示例,请随意浏览代码。
总而言之,调用 PageMethod:
注意:如何使用 AJAX 将jobID
PageMethod 参数与请求一起传递,以及如何在 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();
}