2010-07-07 42 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

相关问题