我有一个aspx文件的代码隐藏文件,如下所示:
public partial class Pages_MyPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
.....
}
protected int MyMethod()
{
.....
}
[WebMethod]
public static int MyPageMethod()
{
int x = MyMethod();
return x;
}
}
当我向MyPageMethod发送ajax POST时,我无法访问MyMethod。围绕这个问题的方法是什么。
感谢您的建议。
答案 0 :(得分:2)
MyMethod
也需要是静态的。
想想你在这里做什么 -
MyMethod
属于类的特定实例。
MyPageMethod
属于类本身。
如果您在MyPageMethod
内运行代码,您怎么可能知道如何在该对象的某个其他实例上调用方法。 实例方法也可能在代码中不存在。
如果您试图从 javascript 中改变页面数据的某些部分,则会对 asp.net 页面的工作方式产生深刻的误解。
当 javascript 在浏览器中运行时,您的页面对象消失了。服务器完成页面加载并将其丢弃。在下一个回发上,它将创建一个新实例,并再次运行页面生命周期。
如果您需要访问页面级别状态,则必须将其存储在回发之间可接受的位置,例如Session对象,System.Web.HttpContext.Current
答案 1 :(得分:1)
WebMethods是static
方法,因为它们没有得到完整的Page
。
他们只能调用其他static
方法