2012-01-01 56 views
1

我得到「未將對象引用設置爲對象的實例」。在我的主頁面代碼後面。如何解決這個問題?site.master.cs中的空引用異常

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

可能重複[什麼是.NET中的NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) – 2012-01-01 17:46:48

回答

0

您試圖找到您的控件的方式是關閉的。該HeadLoginView.FindControl("Login"))回來爲空和你進一步嘗試設置就可以了Visible炸燬

你應該輸入你的控件的ID,正是因爲它在頁面定義`HeadLoginStatus'登錄按鈕顯示了,我認爲

0

如果你的會話對象沒有設置之前使用你得到這個錯誤。

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

我改變了它,但它仍然在其他部分給出相同的錯誤 – ozkank 2012-01-01 16:29:59

+0

沒有必要添加這個額外的檢查 - 它會以相同的方式沒有它。我討厭'爲了防止'檢查null - 他們什麼都不做,只是膨脹了代碼 – mfeingold 2012-01-01 16:32:57