我目前的情况:
我有一个用户控件A.ascx,代码在A.ascx.cs和B.ascx后面,代码在B.ascx.cs后面。 两个代码隐藏文件包含类似的代码。现在我想只创建一个CS文件,例如C.cs 可以由A.ascx和B.ascx使用。
当然,C.cs必须能够通过在A.ascx和B.ascx中使用的ID访问控件。
这可能吗?
答案 0 :(得分:3)
不,但您可以创建单个类并从两个代码behing类中使用它。您可以将用户控件传递给该类,并按ID访问控件。
如果您不输入对控件的访问权限,请执行以下操作:
公共类和接口,用于定义两个用户控件上的子控件,在这里您可以访问子控件:
/// <summary>
/// common controls
/// </summary>
public interface ICommonUserControl
{
TextBox TextBox1 { get; }
Label Label1 { get; }
}
public class CommonCode
{
private ICommonUserControl commonUC;
public CommonCode(ICommonUserControl uc)
{
this.commonUC = uc;
}
public void CommonWork()
{
this.commonUC.TextBox1.Text = "SomeText";
this.commonUC.Label1.Text = "Other Text";
}
}
然后在所有用户控件上必须实现ICommonUserControl接口,如下所示:
public partial class UC1 : System.Web.UI.UserControl, ICommonUserControl
{
public TextBox TextBox1 { get { return this.Uc1TextBox1; } }
public Label Label1 { get { return this.Uc1Label1; } }
protected void Page_Load(object sender, EventArgs e)
{
}
}
最后这里是使用示例:
Control uc1 = this.LoadControl("UC1.ascx");
this.phParent1.Controls.Add(uc1);
Control uc2 = this.LoadControl("UC2.ascx");
this.phParent2.Controls.Add(uc2);
CommonCode cc1 = new CommonCode(uc1 as ICommonUserControl);
cc1.CommonWork();
CommonCode cc2 = new CommonCode(uc2 as ICommonUserControl);
cc2.CommonWork();