我已经尝试了一段时间了。我有一个 jquery 数据表,我在表上设置了 onclick 方法。我知道点击正在起作用,因为我设置了一个警报来为我提供该行中的一段数据。我的下一步是从第 0 列获取一段数据“Quote_Num”,一个整数。并将其设置为 session 变量(使用页面方法),然后调用查找此变量的报价表单,如果存在,则使用信息设置表单从我的数据库中。长话短说,您单击报价表中的行,您将获得包含报价数据的页面。
当我单击报价表中的一行时,我被重定向到 quote.aspx,但未设置 session 变量。因此,程序到达 OnSuccessCallBack 方法,但从未执行 c# 方法中的代码。我在c#方法中设置了断点但从未到达。 ajax 响应似乎是整个网页。我还有一个脚本管理器,在母版页中将 pagemethods 设置为 true。
aspx
$('#Quote').dataTable({
"info": false,
"scrollY": "100px",
"scrollCollapse": true,
"paging": false,
"lengthChange": false,
"columnDefs": [{
"targets": 0,
"visible": false,
"searchable": false
}]
});
var qTable = $('#Quote').DataTable();
$('#Quote tbody').on('click', 'tr', function () {
var quote = qTable.row(this).data()[0];
PageMethods.quoteAdd(quote, OnSuccessCallback, OnFailureCallback);
});
})
function OnSuccessCallback() {
document.location.href = "QuoteFrm.aspx";
}
function OnFailureCallback() {
alert('Error');
}
CS;
[WebMethod]
public static void quoteAdd(int Quote_Num)
{
Page objp = new Page();
objp.Session.Add("Quote", Quote_Num);
}
最佳答案
您需要在 Web 方法中enableSession
。像这样的东西。
//cs head
using System.Web.Services;
[WebMethod(EnableSession=true)]
public static void addQuot(string name)
{
//this is how to access Session object in a static method
HttpContext.Current.Session["name"] = name;
}
关于javascript - 无法让 Pagemethods 工作 c# asp.net ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39194408/