2016-08-22 7 views
2

У меня есть asp:Label контроль под названием MyLabel на моей главной странице внутри asp:LoginView управления под названием lvMaster, что я хочу, чтобы иметь возможность перейти от страницы кода контента позади.asp.NET: Не удается получить доступ к этикетке на мастер-странице из содержимого страницы

У меня есть следующий код на моей главной странице фоновым кодом:

public string MyLabel 
{ 
    get 
    { 
     var lblMyLabel = (Label)lvMaster.FindControl("lblMyLabel"); 
     return lblMyLabel.Text; 
    } 
    set 
    { 
     var lblMyLabel = (Label)lvMaster.FindControl("lblMyLabel "); 
     lblMyLabel .Text = value; 
    } 
} 

И я это на моей странице содержимого на странице загрузки:

Master.MyLabel = "My Text"; 

Это, кажется, работает прекрасно когда я его запускаю, но когда я загружаю его на наш сервер хостинга, я получаю следующую ошибку:

System.NullReferenceException: Object reference not set to an instance of an object.

H Могу ли я решить это?

Edit:

Я понял теперь, что эта проблема возникает только тогда, когда пользователь не вошел в систему (например, если пользователь не является уже вошли в систему администратора). Таким образом, решение этого будет выполняться Master.MyLabel = "My Text"; в блоке if(<user is logged in>) { }. Что мне там делать?

+0

Вы можете поместить его в шаблон Anonymous из login view –

+0

Я только хочу войти в систему, чтобы увидеть ярлык. –

ответ

3

От this answer:

Просто проверить, если пользователь вошел в систему:

bool isLoggedIn = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated 

Затем добавьте в, если заявление:

if(isLoggedIn) Master.MyLabel = "My Text";