我正在为现有(和大型)Web应用程序开发一组新页面,并且正在使它们比以前更加以HTML和JQuery为中心。例如,没有服务器控件,我没有使用ViewState - 一切都在标准HTML中完成。我创建了第一页,效果很好。它在ASPX代码隐藏类上有很多显式的ajax调用到静态方法来获取或存储数据,这些工作正常。
在我分支到其余页面之前,我将相当数量的页面放入Master页面,并将这些组件的回调放入Master页面代码隐藏中。但是,对母版页上的静态方法的任何函数调用都会失败。我可以只是将这些方法移动到ASMX Web服务页面,但现在我的好奇心被激发了,我想了解为什么对aspx页面中的方法的调用有效,但是调用主页面上定义的方法不要。
这是一个问题,为什么在页面上定义方法时,“SaveWeightData”的AJAX回调有效,但在母版页上定义方法时失败:
$.ajax({
type: "POST",
url: "<%=PageName%>/SaveWeightData",
data: "{'weightItem':" + JSON.stringify(newWeight) + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert("Success!");
},
error: function (xhr, ajaxOptions, thrownError, request, error) {
alert('xrs.status = ' + xhr.status + '\n' +
'thrown error = ' + thrownError + '\n' +
'xhr.statusText = ' + xhr.statusText + '\n' +
'request = ' + request + '\n' +
'error = ' + error);
}
})
谢谢!
答案 0 :(得分:3)
主页在运行时在UserControl
对象下变为Page
。 UserControls
无法托管WebMethods
。