【问题标题】:How do I access Page controls from within my custom server control?如何从我的自定义服务器控件中访问页面控件?
【发布时间】:2009-10-16 18:07:43
【问题描述】:

我正在构建一个模态框作为自定义服务器控件,并且我希望在模态框 TargetControlID 上有一个属性,该属性指定单击时将显示模态的元素。我已经在模式框中设置了属性,并且在后面的代码中我使用了以下代码块(我已经在几个不同的地方尝试过

    If (_targetControlId <> "") Then
        Dim targetControl As WebControl = Me.Page.FindControl(_targetControlId)
        targetControl.Attributes.Add("onclick", "test1();")
        targetControl.Attributes.Add("onclick", "test2();")
    End If

发生的情况是 targetControl 始终为 NULL,并在我尝试向其添加属性时导致页面崩溃。我已经仔细检查了 targetControlId 的拼写,并指定了一个 runat="server" 的控件。服务器控件访问其包含页面上的其他控件的正确方法是什么?

谢谢,

迈克

【问题讨论】:

    标签: asp.net custom-server-controls


    【解决方案1】:

    首先,我应该指出,您正在寻找的行为已经存在于免费的开源AjaxControlToolkit 附带的ModalPopupExtender 中。我建议你只使用它。如果您仍然确定要编写自己的代码,那么我建议您至少看看他们的代码,看看他们是怎么做的。 ExtenderControlBase.FindControlHelper 是一个很好的起点。

    【讨论】:

    • 你说得对,我应该用扩展器。我刚刚完成了我自己的 CollapsiblePanel 的创建,因为 CollapsiblePanelExtender 不太适合我的需要,但是模态扩展器应该完全符合我的要求。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2011-07-13
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多