概括 :
Project1 包含一个用户控件 tab1.ascx(基本上是面板 1、2、3 等的集合)
Project2 在 Project1 中被引用。
Project2 包含一个母版页 (MasterPage.cs),我想在其中调用此用户控件 (tab1.ascx)。
从项目 2 调用用户控件的原因是我可以根据用户权限集中控制从母版页启用/禁用选项卡。例如对于管理员,所有选项卡都将可见。对于普通用户,只有第一个选项卡可见。
问题:
我无法在项目 2 中添加项目 1 的引用(循环依赖)。
我能够找到控件并且可以使用强制转换(System.Web.UI.UserControl),但是这种强制转换并不能帮助我调用实际用户控件的方法 - tab1.ascx
有什么方法可以引用项目 2 中的用户控件?
编辑:使用以下代码我可以调用该方法:
tab1.GetType().InvokeMember("DisableTab", BindingFlags.InvokeMethod, null, tab1, new object[] { "Conf Tests" });
现在,它实际上是在调用用户控件的 DisableTab 方法。但它无法找到其中的项目。theTabStr.Items 返回 0。
theTabStr 实际上是一个中继器控件。
public void DisableTab(string strTabName)
{
foreach (RepeaterItem itmRptr in theTabStr.Items)
{
LinkButton lnkbtnTab = (LinkButton)itmRptr.FindControl("theTab");
if (lnkbtnTab != null && lnkbtnTab.Text == strTabName)
{
lnkbtnTab.Enabled = false;
}
}
}
谢谢。