2014-01-26 4 views
1

У меня есть пользовательский элемент управления на моей главной странице под именем входа в группу ролей. Вот элемент управления. Он не находится в заполнителе содержимого. Однако, если я пытаюсь получить к нему доступ, я получаю нулевой результат . Как я могу получить доступ к этому из моего кода страницы. У меня возникла проблема с его получением с главной страницы.доступ к пользовательскому управлению с главной страницы

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

      } 
+0

В какое событие вы пытаетесь получить доступ к этому? – MPelletier

+0

Я не думаю, что «Page.Master.FindControl» - это путь. Я мог ошибаться, но вы пытались «Page.FindControl»? – MPelletier

+0

Я использую его на странице load.find control также возвращает null. – ping

ответ

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"; 
    } 
+0

Использовали этот код, но я продолжаю получать пустой элемент управления LoginView; Страница страницы = (страница) this.Page; MasterPage master = (MasterPage) page.Master; control = (LoginView) master.FindControl ("StudentsPanel"); if (управление! = Null) { Label1.Text = "found"; } ' – ping

+0

Если вы наблюдаете за мастером, вы видите свой Contenttemplate – CheGueVerra

+0

Yes.i может видеть шаблон контента – ping

0

Мы не можем видеть весь код, но ваши сниппеты кажется правильным. Сначала попробуйте не применять свой контроль в LoginView - причина может заключаться в том, что ваша панель не относится к этому типу. Чтобы попробовать, если элемент управления обнаружен вообще, используйте

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

Прежде чем добавить еще один возможный источник отказа.

Есть еще два явных ответа, которые здесь не нужно повторять. Вы найдете замечательные объяснения here и here.

0

как сказал @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"; 
+0

Привет, студентыPanel - это мой пользовательский контроль. – ping

+0

да, попробуйте отрезанный код, показанный выше. он должен работать! – bashkan

+0

Привет, это означает, что у меня должна быть метка в моем шаблоне контента? – ping

Смежные вопросы