我在我的一个类库中定义了一个WebMethod方法,我想在aspx页中访问它。
我有类库项目,其中我创建了一个继承 System.UI.Page 的类,这个新类有一个名为("GetUsername"(的 webmethod 函数。现在我已经在我的 Web 项目中引用了这个库,默认情况下.aspx.cs我继承了新类(我在上面在类库中创建的那个(。现在在 aspx 中,我编写了一个 ajax 函数来访问数据库中的数据,但是它为 404 的 ajax url 参数抛出错误。
这是我的整个代码结构:
1. 类库:
[ScriptService]
public class WebMethodLibrary : Page
{
[WebMethod]
public static object GetCurrentUserName()
{
Alistar.Data.AlistarDataContext db = new Alistar.Data.AlistarDataContext();
Guid gUser = new Guid("8FEF8333-F1AE-4E9E-95F9-07316CE39F73");
var user = db.Users.Find(gUser);
return new { Username = user.Username };
}
}
2. 网页代码隐藏:
public partial class _default : WebMethodLibrary
{
}
3.aspx 带有 Ajax 调用的页面:
$.ajax({
url: 'GetCurrentUserName',
dataType: 'json',
type: 'post',
contentType: 'application/json',
data: {},
processData: false,
success: function (data, textStatus, jQxhr) {
alert(JSON.stringify(data));
},
error: function (jqXhr, textStatus, errorThrown) {
console.log(errorThrown);
}
});
谁能指出可能是什么问题?
我认为您必须在 url 中的方法名称之前指定 aspx 页面的名称 您已经提到页面的名称是默认的.aspx如果它在根目录中,则调用将类似于下面,或者您必须在页面名称之前加上目录的名称。
$.ajax({
url: '~/default.aspx/GetCurrentUserName',
dataType: 'json',
type: 'post',
contentType: 'application/json',
data: {},
processData: false,
success: function (data, textStatus, jQxhr) {
alert(JSON.stringify(data));
},
error: function (jqXhr, textStatus, errorThrown) {
console.log(errorThrown);
}
});