【发布时间】:2012-04-14 20:35:01
【问题描述】:
我有 3 个 ASP.NET 页面。每个都有自己的 GetSearchResult 方法,该方法产生不同的搜索结果并填充 GridView。每个页面都从帮助程序类中调用一个共享的帮助程序方法。
现在,在这个帮助器类中,我想执行属于调用该帮助器方法的页面上的 GetSearchResult 方法。
这可能吗?如果是这样,我应该怎么做?
【问题讨论】:
我有 3 个 ASP.NET 页面。每个都有自己的 GetSearchResult 方法,该方法产生不同的搜索结果并填充 GridView。每个页面都从帮助程序类中调用一个共享的帮助程序方法。
现在,在这个帮助器类中,我想执行属于调用该帮助器方法的页面上的 GetSearchResult 方法。
这可能吗?如果是这样,我应该怎么做?
【问题讨论】:
将拥有方法 GetSearchResult 的类的一个实例作为参数传递给您的辅助方法。这将使辅助方法可以访问调用者方法。您需要实现一个接口来执行此操作。
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();
}
}
【讨论】:
您可以将页面的引用作为参数传递给辅助方法,然后在页面上再次调用 GetSearchResult。 (理想情况下,您的页面应该实现一个接口,例如 ISearchPage,其中包含方法 GetSearchResult)
[编辑:正如我在上面输入的内容,大卫安德森在他的回答中提供了代码]
或者,在您的辅助方法中,在辅助对象上设置状态标志(或使用状态枚举)。在您的页面中,您可以读取该标志或枚举值,如果状态表明应该再次调用 GetSearchResult,请再次调用它。
【讨论】: