asp.NET:无法从内容页面访问母版页上的标签

时间:2016-08-22 09:24:14

标签: c# asp.net label master-pages loginview

我的主页上有一个asp:Label名为MyLabel的控件asp:LoginView名为lvMaster的控件,我希望能够从后面的内容页面代码更改

我的主页面代码隐藏了以下代码:

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:未将对象引用设置为对象的实例。

我该如何解决这个问题?

修改

我现在意识到只有在用户未登录时才会出现此问题(即,如果用户不是已登录的管理员)。因此,解决方案是在Master.MyLabel = "My Text";块中运行if(<user is logged in>) { }。我该怎么办?

1 个答案:

答案 0 :(得分:3)

来自this answer

只需检查用户是否已登录:

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

然后添加到if语句:

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