【问题标题】:null reference exception in site.master.cssite.master.cs 中的空引用异常
【发布时间】:2012-01-31 10:05:33
【问题描述】:

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

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>

【问题讨论】:

标签: c# asp.net


【解决方案1】:

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

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

【讨论】:

  • 没有必要添加这个额外的检查 - 没有它它会以同样的方式工作。我讨厌“以防万一”检查 null - 他们只会让代码膨胀
【解决方案2】:

您尝试定位控件的方式已关闭。 HeadLoginView.FindControl("Login")) 以 null 的形式返回,您进一步尝试在其上设置 Visible 失败了

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

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 2012-09-29
    • 1970-01-01
    • 2013-09-21
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多