使用页面方法访问页面时访问页面的方法

时间:2011-06-16 20:19:03

标签: c# asp.net

我有一个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。围绕这个问题的方法是什么。

感谢您的建议。

2 个答案:

答案 0 :(得分:2)

MyMethod也需要是静态的。

想想你在这里做什么 -

MyMethod属于的特定实例

MyPageMethod属于本身。

如果您在MyPageMethod内运行代码,您怎么可能知道如何在该对象的某个其他实例上调用方法。 实例方法也可能在代码中不存在。

如果您试图从 javascript 中改变页面数据的某些部分,则会对 asp.net 页面的工作方式产生深刻的误解。

javascript 在浏览器中运行时,您的页面对象消失了。服务器完成页面加载并将其丢弃。在下一个回发上,它将创建一个新实例,并再次运行页面生命周期。

如果您需要访问页面级别状态,则必须将其存储在回发之间可接受的位置,例如Session对象,System.Web.HttpContext.Current

答案 1 :(得分:1)

WebMethods是static方法,因为它们没有得到完整的Page

他们只能调用其他static方法