访问页面的方法访问页面与页面方法
我后面的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;
}
}
当我送一个AJAX POST到MyPageMethod,我可以”访问MyMethod。解决这个问题的方法是什么。
感谢您的建议。
的WebMethods是static
方法,因为他们没有得到一个完整的Page
。
他们只能调用其他方法static
MyMethod
还需要是静态的。
想想你想在这里做 -
MyMethod
属于类的特定实例。
MyPageMethod
属于类本身。
如果里面MyPageMethod
你运行的代码,你怎么可能知道如何调用该对象的其他一些实例方法。方法可能不存在于代码中的那一点。
如果你正试图从的JavaScript变异页面的数据的某些部分,你有页如何asp.net工作的深刻误解。
在点javascript正在浏览器中运行,您的页面对象不见了。服务器完成了页面加载并丢弃它。在接下来的后回它会创建一个新的实例,并通过页面生命周期再次运行。
如果您需要访问页面的水平状态,你必须把它保存在一个地方,那就是后背上,比如Session对象之间可以接受的,与System.Web.HttpContext.Current
谢谢;我没有从JavaScript中改变页面,我只是写了一个Ajax回调。我将添加他静态关键字,使其工作。 – frenchie 2011-06-16 20:34:49
事实上,PageMethods是静态的,完全绕过了页面生命周期。实际上没有任何页面生命周期,因为Page类的实例从未被创建。 – 2011-06-16 21:14:16
好,非常感谢,这使得它很容易。 – frenchie 2011-06-16 20:35:13