+ -
当前位置:首页 → 问答吧 → 100分 高手进 asp.net后台静态方法怎么调用非静态方法

100分 高手进 asp.net后台静态方法怎么调用非静态方法

时间:2011-12-16

来源:互联网

[WebMethod]
  public static void test()
  {
  GetDictionaryInfoByCondition();//出问题,静态方法不能直接调用非静态方法,实例化不行
  }

在WebMethod中怎么调用同页面的GetDictionaryInfoByCondition()方法,实例化不行

  private void GetDictionaryInfoByCondition()
  {
  DataTable dtPatientInfos = RelatedDictionaryInfoManager.GetDictionaryInfoByCondition(AspNetPager1.StartRecordIndex - 1, AspNetPager1.PageSize);
  //绑定数据
  this.gvDictionaryInfos.DataSource = dtPatientInfos;
  this.gvDictionaryInfos.DataBind();
  }

在test中实例化对象是不行的,请高手求解,谢谢 

作者: emrshine003   发布时间: 2011-12-16

定义一个静态方法A,把非静态方法中的实例部分做为参数传给A,在A内部处理。

作者: dalmeeme   发布时间: 2011-12-16

将对象实例作为参数传递给test方法。

作者: qwertxp   发布时间: 2011-12-16

lz解释了...

作者: QDwangle   发布时间: 2011-12-16

webservice ?
静态方法有什么用?

作者: charles_y   发布时间: 2011-12-16

补充一点:静态方法实在js中调用的,顺序是js调用静态方法,静态方法调用非静态方法

作者: emrshine003   发布时间: 2011-12-16

能用js调用?
静态方法没有context,根本不满足web的应用场景, 能调用吗?

作者: charles_y   发布时间: 2011-12-16

想再js中实现数据绑定?你的想法不好,js调用静态方法是为了实现ajax异步数据传输,不是这样用的

作者: ssp2009   发布时间: 2011-12-16

不好意思,没用过js调用方法,查了一下还真是必须是静态方法,那这个方法是跟这个类本身没多大关系的,所以
参数还是自己穿进去吧,静态方法是没有this的。

作者: charles_y   发布时间: 2011-12-16

引用 6 楼 charles_y 的回复:

能用js调用?
静态方法没有context,根本不满足web的应用场景, 能调用吗?

谁说静态方法不能访问 context,HttpContext.Current 就是当前的 context,只要请求进了 Http 管线,就可以访问到 context,不管是静态还是非静态方法。
只不过楼主没有弄清楚一个问题,Ajax 请求和原有的请求根本就不是同一个请求,你用另外一个请求来刷新原有页面,必须在前台用 JS 来重新填充需要填充的节点。
至于静态方法要调用非静态方法,那得在静态方法中实例化一个当前类的对象,比如当前页面类是 _Default:
_Default d = new _Default();
d.GetDictionaryInfoByCondition();
这个跟 ASP.NET 没关系,不过是 C# 的基础知识而已。
不过楼主的这个结构做得可不好,为什么要做成一个 WebService,然后来调用呢?

作者: orain   发布时间: 2011-12-16