【问题标题】:ScriptManager in a User Control inside a UserControlUserControl 内的用户控件中的 ScriptManager
【发布时间】:2011-02-11 01:19:57
【问题描述】:

我有一个 asp.net 用户控件 userControl1.ascx 和另一个用户控件 userControl2.ascx。 userControl2 在 userControl1 内。 userControl1 在 UpdatePanel 控件中。 userControl2 里面有一个按钮,然后我想在按下时做一个正常的回帖。我想使用 ScriptManager.RegisterPostBackControl(button)。我在母版页上有一个 ScriptManager。我不知道如何访问 userControl2 中的 ScriptManager 以在 Page_Load 事件中注册按钮。那么,我该怎么做呢?

【问题讨论】:

    标签: asp.net updatepanel scriptmanager


    【解决方案1】:

    您可以使用递归 FindControl 方法找到脚本管理器。这不是最佳实践,但可以完成工作。这并不是一个很好的方法。

    var scriptManager = FindControl(Page, "IdOfScriptManager"); 
    
    public static Control FindControlRecursive(Control root, string id)
        {
            if (root.ID == id)
            {
                return root;
            }
    
            foreach (Control c in root.Controls)
            {
                Control t = FindControlRecursive(c, id);
                if (t != null)
                {
                    return t;
                }
            }
    
            return null;
        }
    

    【讨论】:

    • 那行得通。你能告诉我为什么常规的查找控件在这里不起作用吗?
    • ScriptManager 可能不是页面的直接子级。它可能在其他控件中。使用母版页时通常会出现这种情况,因为母版页和内容占位符也被视为控件。
    • ScriptManager.GetCurrent 会不会更好? stackoverflow.com/questions/8601525/…
    猜你喜欢
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2011-01-22
    • 2011-02-17
    相关资源
    最近更新 更多