FindControls <t>扩展方法 - 我缺少什么?</t>

时间:2014-10-21 15:41:34

标签: c# asp.net webforms textbox extension-methods

我正在尝试添加扩展方法,以便在Web表单ASP.Net页面上轻松获取各种不同控件类型的列表。我创建了一个新的静态类并插入了扩展方法:

public static class PageExtension
{
    public static IEnumerable<T> FindControls<T>(this Page page, bool recurse) where T : Control
    {
        List<T> found = new List<T>();
        Action<Control> search = null;
        search = ctrl =>
        {
            foreach (Control child in ctrl.Controls)
            {
                if (typeof(T).IsAssignableFrom(child.GetType()))
                {
                    found.Add((T)child);
                }
                if (recurse)
                {
                    search(child);
                }
            }
        };
        search(control);
        return found;
    }
}

现在我想从我的页面调用该方法,所以我添加了这个:

    protected void ResetControls()
    {
        var listTextBox = this.Page.FindControls<TextBox>(true);
    }

但是我得到了编译错误:

&#39; System.Web.UI.Page&#39;不包含&#39; FindControls&#39;的定义没有扩展方法&#39; FindControls&#39;接受类型&#39; System.Web.UI.Page&#39;的第一个参数。可以找到

如果有任何不同,我正在使用母版页,但我在这里缺少什么?

谢谢!

0 个答案:

没有答案