如何从我的自定义服务器控件中访问页面控件?

时间:2009-10-16 18:07:43

标签: asp.net custom-server-controls

我正在构建一个模式框作为自定义服务器控件,我希望在模态框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”的控件。服务器控件访问其包含页面上的其他控件的正确方法是什么?

谢谢,

麦克

1 个答案:

答案 0 :(得分:0)

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