【问题标题】:accessing a user control from masterpage从母版页访问用户控件
【发布时间】:2014-01-26 16:59:04
【问题描述】:

我在角色组下的登录视图下的母版页中有一个用户控件。这是控件。它不在内容占位符中。但是,如果我尝试访问它,我得到空结果。我怎样才能访问它从我后面的页面代码。我在从母版页获取它时遇到问题。

<asp:RoleGroup Roles="Students">
                    <ContentTemplate>
                        <uc1:studentsPanel runat="server" ID="studentcontrol" />
                    </ContentTemplate>
                     </asp:RoleGroup>

这是我的代码

LoginView control = Page.Master.FindControl("studentcontrol") as LoginView;
            if (control != null)
            {
                Label1.Text = "found";

            }

【问题讨论】:

  • 你在什么情况下试图访问这个?
  • 我不认为Page.Master.FindControl 是要走的路。我可能是错的,但你试过Page.FindControl吗?
  • 我在页面加载中使用它。find 控件也返回 null。

标签: c# asp.net


【解决方案1】:

这是我用来访问 MasterPages 中的控件的代码

    //Master page from user control
    LoginControl control

    Page page = (Page)this.Page;
    MasterPage master = (MasterPage)page.Master;

    control= (LoginControl )master.FindControl("studentcontrol");

    if (control!= null)
    {
        Label1.Text = "found";
    }

【讨论】:

  • 已使用此代码,但我一直收到 null LoginView control; Page page = (Page)this.Page; MasterPage master = (MasterPage)page.Master; control= (LoginView)master.FindControl("StudentsPanel"); if (control!= null) { Label1.Text = "found"; }
  • 如果你看master,你看到你的Contenttemplate了吗
  • 是的。我可以看到内容模板
  • 你看到内容模板里面的标签了吗,如果有的话,改变查找控件的部分,改为在内容模板中查找
  • 在我的内容模板中没有使用标签。我正在使用的标签在我的页面上。这可能是原因吗?
【解决方案2】:

我们看不到整个代码,但您的 sn-ps 似乎是正确的。首先尝试不要将您的控件投射到 LoginView - 原因可能是您的面板不是那种类型。要尝试是否找到控件,请使用

if(Page.Master.FindControl("studentcontrol") != null) {
    Label1.Text = "found";
}

首先在添加另一个可能的故障源之前。

这里有两个更明确的答案不需要重复。你会发现herehere的精彩解释。

【讨论】:

    【解决方案3】:

    正如@Krishnraj 所说,

    我不知道studentsPanel UserControl 中哪个是控件,但我假设那个标签。你应该这样访问,

    var Loginview = (Master.FindControl("LoginView1") as LoginView);
    Control cont = new Control();
    Loginview.RoleGroups[0].ContentTemplate.InstantiateIn(cont);
    (cont.Controls[1].FindControl("_trylbl") as Label).Text = "Hello say";
    

    【讨论】:

    • 嗨,studentsPanel 是我的用户控件
    • 嗨,这意味着我的内容模板中应该有一个标签?
    • 不,只有一个例子。您可以放置​​任何控件。
    猜你喜欢
    • 2017-12-23
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多