我在页面上定义了2个用户控件:
<%@ Register Src="Foo.ascx" TagName="FooControl" TagPrefix="acme" %>
<%@ Register Src="Bar.ascx" TagName="BarControl" TagPrefix="acme" %>
.
.
.
<acme:FooControl ID="myFoo" runat="server" Visible="false" />
<acme:BarControl ID="myBar" runat="server" Visible="false" />
在运行时,我想在页面代码的不同位置设置一个用户控件的属性。例如:
protected void SomeMethod()
{
if (isSomeCondition)
{
myFoo.Visible = true;
}
else
{
myBar.Visible = true;
}
// ...
if (somethingElse)
{
if (isSomeCondition)
{
myFoo.Prop1 = 123;
}
else
{
myBar.Prop1 = 123;
}
}
// ...
}
我知道我可以从一个通用接口继承2个用户控件,但还有另一种(可能更好)的方法吗?
答案 0 :(得分:1)
编辑:我刚刚意识到我的大部分答案已经被同一问题的评论所涵盖。向评论的人道歉,我并没有故意“窃取”你的内容...... :)
不,我可以想到不同的方法来实现相同的结果(通过反射调用属性或使用FindControl来处理某些内容)但我想不出任何比使用两个控件实现相同的界面更好的方式。
然后,您可以通过其他属性访问活动控件,例如:
public IMyControl ActiveControl
{
get
{
return (isSomeCondition)? myFoo : myBar;
}
}