从调用helper方法的页面上的helper类调用方法

时间:2012-04-14 20:35:01

标签: c# asp.net helpers

我有3个ASP.NET页面。每个都有自己的 GetSearchResult 方法,它产生不同的搜索结果并填充GridView。每个页面都从一个辅助类调用一个共享的辅助方法。

现在在这个帮助器类中,我想执行属于调用辅助方法的页面上的 GetSearchResult 方法。

这可能吗?如果是这样,我该怎么做?

2 个答案:

答案 0 :(得分:3)

将拥有方法GetSearchResult的类的实例作为辅助方法的参数传入。这将使helper方法访问调用方法。您需要实现一个接口才能执行此操作。

public interface ISearchable
{
    void GetSearchResult();
}

public class MyPage : Page, ISearchable
{
    public void GetSearchResult() {
        HelperClass.HelperMethod(this); // Pass in
    }
}

public static class HelperClass
{
    public static void HelperMethod(ISearchable page) {
        page.GetSearchResult();
    }
}

答案 1 :(得分:1)

您可以将对页面的引用作为辅助方法的参数传递,并在页面上再次调用GetSearchResult。 (理想情况下,您的页面应该实现一个接口,比如ISearchPage,它包含GetSearchResult方法)

[编辑:当我输入上述内容时,David Anderson在他的回答中提供了代码]

或者,在帮助器方法中,在辅助对象上设置状态标志(或使用状态枚举)。在您的页面中,您可以读取该标志或枚举值,如果状态显示应再次调用GetSearchResult,请再次调用它。