我得到“对象引用未设置为对象的实例”。在我的母版页代码后面。怎么解决这个?
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>
答案 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输入我认为的登录按钮