代码之家  ›  专栏  ›  技术社区  ›  Arunabh Das

“使用new关键字创建对象”实例错误

  •  1
  • Arunabh Das  · 技术社区  · 14 年前

    我有一个名为master page.master的master page文件,它可以很好地处理我所有的aspx页面,除了aspx页面,在其中我尝试在codebehind文件的page_Load方法中实例化内容。

    名为managerroles.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>
    

    名为managerRoles.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应用程序项目,它构建得很好,但是当我单击managerRoles.aspx的链接时抛出了一个运行时异常。

    我有以下例外-

    用户代码未处理System.NullReferenceException message=“对象引用未设置为对象的实例。” source=“电子服务” StackTrace: 在c:\users\das.arunabh\documents\Visual Studio 2008\projects\eService\Solution-main\eService\eService\ManagerRoles.aspx.cs:line 24中的eservice.managerRoles.page加载(对象发送程序,事件参数e) 在System.Web.Util.CalliHelper.EventArgFunctionCaller上(intptr fp,object o,object t t,eventargs e) at system.web.util.calliEventHandlerDelegateProxy.callback(对象发送方,事件参数e) at system.web.ui.control.onload(事件参数e) 在System.Web.UI.Control.LoadRecursive()上 在system.web.ui.page.processRequestMain上(Boolean IncludeStagesBeforeAsyncPoint、Boolean IncludeStagesAfterAsyncPoint) InnerException:

    3 回复  |  直到 14 年前
        1
  •  2
  •   Tim Coker    14 年前

    我不认为 Msg 是保留字,但您可能要尝试重命名它。很可能设计器没有在designer.cs文件中正确创建成员变量。请尝试以下操作(基本上,先删除标签的HTML,然后再读取标签的HTML,让设计器创建成员变量):

    1. 从编辑器中剪切HTML代码
    2. 切换到页面的设计视图
    3. 切换到后面的代码
    4. 切换回页面的设计器视图
    5. 切换到源视图
    6. 重新粘贴代码
    7. 切换到设计器
    8. 回到你的代码隐藏。
    9. 如果幸运的话,代码应该可以工作。
        2
  •  0
  •   Joe Garrett    14 年前

    一般来说,我不会在masterpage代码文件中执行身份验证服务…使用login.aspx.cs代码文件作为实际的身份验证服务,而让masterpage执行masterpage用于显示演示文稿和内容的目的。

    <%@master language=“c”autoeventwireup=“true”codefile=“site.master.cs”inherits=“site”%> 表单身份验证、授权和用户帐户

    用户帐户教程 TODO:菜单将在此处显示…

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

        3
  •  0
  •   Germán Rodríguez    14 年前

    错误表明您试图为 Msg.Text 但是 正文 不在当前作用域中。