2012-05-16 1 views
1

Моя главная страница содержит следующее:не удается получить доступ к содержимому этикетки в держателе место в главной странице

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
    <asp:Label ID="User" runat="server" Text="Welcome, " Visible="false"></asp:Label> 
</asp:ContentPlaceHolder> 

Я пытаюсь получить доступ к этикетке, как это:

Label welcomeLabel; 
ContentPlaceHolder cPlaceHolder;    

cPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1"); 

if (cPlaceHolder != null) 
{ 
    welcomeLabel = (Label)cPlaceHolder.FindControl("User"); 
    if (welcomeLabel != null) 
    { 
     welcomeLabel.Text = "Welcome, " + u.Name; 
     welcomeLabel.Visible = true; 
    } 
} 

Я проверил что ContentPlaceHolder1 действительно найден и использует HasControls(), он возвращает true, но я не могу получить доступ к метке.

Помогите мне?

+0

попробуйте найти это.Master.FindControl («Пользователь»); и посмотреть, придет ли оно или нет –

+0

В какой момент вы звоните в свой код? Кроме того, я прав, что этот код работает в контексте страницы, встроенной в другой контент-сайт? Я могу сказать, что ваш код работает здесь. – platon

+0

@platon - этот код работает при загрузке страницы. Когда я помещаю ярлык с id = user на фактическую страницу, на которой этот код вызывается, он работает, но мое понимание основных страниц заключается в том, что я не должен этого делать. – Jackass

ответ

2

I тоже имеющий такой же prblem.

то, что я сделал это

MasterPage ctl00 = FindControl("ctl00") as MasterPage; 
ContentPlaceHolder cplacehld = ctl00.FindControl("ContentPlaceHolder1") as ContentPlaceHolder; 
       Label label1= cplacehld.FindControl("User") as Label; 
0

попробовать с:

((Label)this.Page.Master.FindControl("User")).Text = "Welcome, " + u.Name; 
((Label)this.Page.Master.FindControl("User")).Visible = true; 
0

Этот вопрос преследовал меня в течение двух часов, пока я не понял, что если у меня есть жерех: Содержание метки на моей странице с идентификатор contentplaceholderID установлен на идентификатор для владельца содержимого на главной странице, и я никогда не смогу получить доступ к каким-либо элементам управления в contenplacholder. Страница asp: Content всегда сливается с содержимым MasterPage, даже если тег asp: Content на вашей странице содержимого пуст. Чтобы обеспечить контент по умолчанию, я переместил свою метку за пределы тега contentplaceholder и установил видимость на false. Если бы я тогда динамически определял, что у меня не было никакого контента для моего asp: тега Content, я бы просто установил видимость метки в true, чтобы отображать содержимое по умолчанию. Не совсем элегантный, но он работает.

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

  • Нет связанных вопросов^_^