site.master.cs中的null引用异常

时间:2012-01-01 16:21:32

标签: c# asp.net

我得到“对象引用未设置为对象的实例”。在我的母版页代码后面。怎么解决这个?

Site.Master.Cs

 protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["IsLogin"] == "1")
        {
            ((HyperLink)HeadLoginView.FindControl("Login")).Visible = false;
            ((HyperLink)HeadLoginView.FindControl("Logout")).Visible = true;
        }
        else
        {
            ((HyperLink)HeadLoginView.FindControl("Login")).Visible = true;
            ((HyperLink)HeadLoginView.FindControl("Logout")).Visible = false;
        }
    }

的Site.Master

 <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
                <AnonymousTemplate>
                    [ <a href="~/Default.aspx" id="HeadLoginStatus" runat="server">Log In</a> ]
                     [ <a href="~/Logout.aspx" id="HeadLoginStass" runat="server">Log Out</a> ]
                </AnonymousTemplate>

2 个答案:

答案 0 :(得分:0)

如果您的会话对象在使用之前未设置,则会出现此错误。

 if (Session["IsLogin"] != null && Session["IsLogin"].ToString() == "1")
{
   // your current code
}
else
{
   // your current code.
}

答案 1 :(得分:0)

您尝试找到控件的方式已关闭。 HeadLoginView.FindControl("Login"))返回为null,您进一步尝试设置Visible就会出现问题

您应该完全按照页面定义“HeadLoginStatus”中显示的控件ID输入我认为的登录按钮