从母版页访问用户控件

时间:2014-01-26 16:59:04

标签: c# asp.net

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

<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";

            }

3 个答案:

答案 0 :(得分: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";
    }

答案 1 :(得分:0)

我们无法看到整个代码,但您的代码段似乎是正确的。首先尝试不将控件转换为LoginView - 原因可能是您的面板不属于该类型。要尝试完全找到控件,请使用

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

首先添加另一个可能的失败源。

这里有两个更明确的答案,不需要在这里重复。您会找到精彩的解释herehere

答案 2 :(得分:0)

正如@Krishnraj所说,

我不知道studentPanel UserControl中的哪个是控件,但我假设是Label。你应该这样访问,

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";