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