2010-07-07 74 views
1

我有一個名爲Masterpage.master的masterpage文件,它可以與我的所有aspx頁面一起工作,除了aspx頁面,我嘗試在Page_Load方法中實例化代碼隱藏文件。「使用新的關鍵字來創建一個對象」實例錯誤

稱爲ManageRoles.aspx ASPX文件看起來是這樣的 -

  <%@ Page Language="C#" 
      AutoEventWireup="true" 
      CodeBehind="ManageRoles.aspx.cs" 
      Inherits="eservice.ManageRoles" 
      MasterPageFile="~/MasterPage.Master" 

      %> 


      <asp:Content ID="Content2" 
       ContentPlaceHolderID="ContentPlaceHolder1" 
       runat="server"> 
       <!-- Start of roles --> 
       <h3> 
        Manage Roles</h3> 


       <asp:Label ID="Msg" ForeColor="maroon" runat="server" /> 
       <br /> 

       <!-- End of roles --> 
       <asp:LoginView ID="LoginView2" runat="server"> 


        <LoggedInTemplate> 
         <p id="backtoblog"></p> 



       <!-- End of roles --> 

        </LoggedInTemplate> 

        <AnonymousTemplate> 

        </AnonymousTemplate> 


        </asp:LoginView> 

      </asp:Content> 

和代碼隱藏文件名爲ManageRoles.aspx.cs看起來是這樣的 -

  using System; 
      using System.Collections.Generic; 
      using System.Linq; 
      using System.Web; 
      using System.Web.UI; 
      using System.Web.UI.WebControls; 
      using System.Web.Security; 



      namespace eservice 
      { 
       public partial class ManageRoles : System.Web.UI.Page 
       { 
        private string[] rolesArray; 
        private string[] usersInRole; 
        MembershipUserCollection users; 



        protected void Page_Load(object sender, EventArgs e) 
        { 
         // clear the Msg label on each visit 
         Msg.Text = string.Empty; 


        } 

       } 
      } 

的Masterpage.master文件包含這樣的內容部分 -

  <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 

        </asp:ContentPlaceHolder> 

這是一個web應用程序項目,它構建不錯,但拋出一個運行時異常,當我點擊了鏈接,ManageRoles.aspx

我收到以下異常的 -

System.NullReferenceException是由用戶代碼未處理 消息未設置爲一個實例=「對象引用的對象。「 Source =「eservice」 StackTrace: at eservice.ManageRoles.Page_Load(Object sender,EventArgs e)in C:\ Users \ das.arunabh \ Documents \ Visual Studio 2008 \ Projects \ ESERVICE_SOLUTION-MAIN \ eservice \ eservice \ ManageRoles .aspx.cs:line 24 at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e) 在System.Web.UI.Control.OnLoad(EventArgs的) 在System.Web.UI.Control.LoadRecursive() 在System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint) 的InnerException:

+0

哪條線是24號線? – 2010-07-07 20:58:14

+0

Msg.Text = string.Empty; – Das 2010-07-07 21:03:30

+0

Page_Load中是否有更多代碼,特別是使用rolesArray的語句? – 2010-07-07 21:14:20

回答

2

我不認爲Msg是保留字,但您可能想嘗試重命名它。設計師很可能沒有在Designer.cs文件中正確創建成員變量。試試下面的(基本上,刪除然後重新進行添加的HTML標籤讓設計人員創建成員變量):

  1. 切HTML代碼進行編輯
  2. 切換到頁面的設計視圖
  3. 切換到後面的代碼
  4. 切換回頁面的設計視圖
  5. 切換到源視圖
  6. 重新粘貼代碼
  7. 開關(t) o設計師
  8. 回到你的代碼隱藏。
  9. 保存,如果你幸運,代碼應該工作。
+0

你好。我嘗試重命名並遵循上述步驟,但仍然收到相同的錯誤。請幫忙。 – Das 2010-07-07 21:16:56

+0

打開您的.designer.cs文件。讓100%確定'Msg'變量在那裏被定義。 – 2010-07-07 21:25:28

+0

designer.cs文件包含Msg變量 - protected global :: System.Web.UI.WebControls.Label Msg; 如果我將該聲明移至代碼隱藏文件會有幫助嗎? – Das 2010-07-07 21:29:57

0

一般情況下,我會避免在主頁面代碼文件內部進行身份驗證服務......使用login.aspx.cs Codefile作爲您的實際身份驗證服務,並讓masterpage執行masterpage的操作... Display演示和內容。

<%@ Master Language =「C#」AutoEventWireup =「true」CodeFile =「Site。master.cs」繼承= 「網站」 %> 窗體身份驗證,授權和用戶帳戶

用戶帳戶教程 TODO:菜單會在這裏.. 。

注:http://www.asp.net/security/tutorials/an-overview-of-forms-authentication-cs

0

錯誤說你試圖給一個值Msg.Text,但Msg.Text在當前範圍內不存在。

+0

Msg是我在aspx頁面中創建的的ID,因此它應該在範圍內。此外,designer.cs文件包含控件 - 公共部分類ManageRoles {/ Msg控件。 /// ///自動生成的字段。 ///修改移動字段聲明從設計器文件到代碼隱藏文件。 /// protected global :: System.Web.UI.WebControls.Label Msg; } – Das 2010-07-07 21:20:14

相關問題