从PageMethods调用业务逻辑层方法

时间:2010-07-12 06:13:42

标签: asp.net webforms asmx pagemethods

我在Web表单应用程序中有一个静态页面方法,我想从它调用私有类级变量的方法,如下所示。我正在使用jQuery来调用页面方法。

private readonly ICatalogBLL _catalogBLL = new CatalogBLL();

protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
  {
    _catalogBLL.GetSomething();
  }
}

[WebMethod]
public static UpdateSomething(int i)
{
   //Want to do as below. But can't call it from a static method.
   _catalogBLL.UpdateSomething();
}

更新
如果我按照约翰·桑德斯的说法调用它,它是否会对来自不同用户的请求使用相同的实例,因为它在静态方法中?

2 个答案:

答案 0 :(得分:4)

你做不到。页面方法是静态的。您的_catalogBLL是实例成员。

但是,由于您在每个请求中都创建了CatalogBLL的新实例,为什么不再这样做呢?

[WebMethod]
public static UpdateSomething(int i)
{
   CatalogBLL catalogBLL = new CatalogBLL();
   catalogBLL.UpdateSomething();
}

答案 1 :(得分:1)

你不能打电话,因为pagemethods是静态的......

静态方法只是与其包含类的任何实例解除关联的方法。更常见的替代方法是实例方法,该方法的结果取决于它所属的类的特定实例的状态。

看看John saunder的回答..