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

时间:2010-07-07 20:56:57

标签: c# asp.net

我有一个名为Masterpage.master的母版页文件,除了我尝试在代码隐藏文件中的Page_Load方法中实例化东西之外,我的所有aspx页面都能正常工作。

名为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未被用户代码处理   Message =“对象引用未设置为对象的实例。”   来源=“电子服务”   堆栈跟踪:        at eservice.ManageRoles.Page_Load(Object sender,EventArgs e)位于C:\ Users \ das.arunabh \ Documents \ Visual Studio 2008 \ Projects \ ESERVICE_SOLUTION-MAIN \ eservice \ eservice \ ManageRoles.aspx.cs:第24行        在System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)        在System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)        在System.Web.UI.Control.OnLoad(EventArgs e)        在System.Web.UI.Control.LoadRecursive()        在System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)   InnerException:

3 个答案:

答案 0 :(得分:2)

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

  1. 从编辑器中删除html代码
  2. 切换到页面的设计视图
  3. 切换到
  4. 背后的代码
  5. 切换回页面的设计器视图
  6. 切换到源视图
  7. 重新粘贴代码
  8. 切换到设计师
  9. 回到你的代码隐藏。
  10. 保存,如果幸运的话,代码应该有效。

答案 1 :(得分:0)

一般情况下,我会避免在母版页代码文件中进行身份验证服务...使用login.aspx.cs代码文件来实现您的实际身份验证服务,并让masterpage's来执行主页的目的...显示演示文稿和内容

&lt;%@ Master Language =“C#”AutoEventWireup =“true”CodeFile =“Site.master.cs”Inherits =“Site”%&gt;      表单身份验证,授权和用户帐户   

             用户帐户教程                                                TODO:菜单会在这里......        

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

答案 2 :(得分:0)

错误表示您尝试为Msg.Text提供值,但当前范围中不存在Msg.Text