用户控件替换aspx页面上的其他控件

时间:2009-12-10 16:45:28

标签: asp.net

我在页面上有一个控件(让我们说一个按钮)。我想创建一个这样的用户控件,它将具有一个属性TargetControlID,它在页面上获取控件ID(按钮),然后渲染将用另一个按钮(第一个按钮的克隆)替换(隐藏)它。可能吗?有没有人做过这样的事情?

2 个答案:

答案 0 :(得分:2)

这当然是可能的,但我建议采用一种替代方法,减少问题。

不要替换目标控件,只需将其可见性设置为false即可隐藏它。这样,它所做的任何处理仍然有效,控件ID在渲染时将保持静态(自动生成的控件ID取决于控件的顺序),并且它将具有与您正在寻找的相同的效果。

答案 1 :(得分:1)

是的,你可以做你正在谈论的事情。以通常的方式创建用户控件。这是一个链接,以防您不熟悉:Creating a User Control

然后在代码隐藏中创建一个属性,如下所示:

public string TargetControlID { get; set; }

一旦它是一个属性,你可以通过html访问它:

<Azat:AzatButton ID="abtn1" runat="server" TargetControlID="btnOtherButton1" />

然后在Page_Load()事件处理程序中,基于this.abtn1.TargetControlID实例化一个按钮,并从Page的Controls集合中删除abtn1。

this.Controls.Remove(this.abtn1);