为什么我会收到这个 System.NullReferenceException 错误?

5

我遇到了一个奇怪的错误。我有以下前端代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/nokernok/MasterPages/nokernok.Master" AutoEventWireup="true" CodeBehind="articleList.aspx.cs" Inherits="development.nokernok.articleList" %>
<%@ Register TagPrefix="EPiServer" Namespace="EPiServer.WebControls" Assembly="EPiServer" %>

<asp:Content ID="Content2" ContentPlaceHolderID="LeftContentPlaceHolder" runat="server">    
    <asp:Label ID="lblTest" runat="server" />    
</asp:Content>

我有以下后端代码:

using System;
using System.Web;
using EPiServer;
using EPiServer.Core;
using development.NaafLibrary;

namespace development.nokernok
{
    public partial class articleList : TemplatePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblTest.Text = "TEEEEEEEEEEEST";    
        }
    }
}

设计文件:

namespace development.nokernok {
    public partial class articleList {        
       protected global::System.Web.UI.WebControls.Label lblTest;
    }
}

And I get thiss error message:

Object reference not set to an instance of an object.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

[NullReferenceException: Object reference not set to an instance of an object.]
development.nokernok.articleList.Page_Load(Object sender, EventArgs e) in C:\Inetpub\wwwroot\naaf\nokernok\articleList.aspx.cs:17
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.EventHandler.Invoke(Object sender, EventArgs e) +0
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

我有其他的模板可以正常使用。我只是不明白为什么在这里会出现这个错误。

更新1:

我刚刚添加了一些代码。


你提供的示例看起来不错,能否给一个更详细的片段?你的ViewState启用了吗? - hallie
打开页面跟踪功能,查看发生了什么/何时发生。 - H H
Hallie: 前端还是后端?我该如何检查我的ViewState是否已启用?Henk: 我正在使用Visual Web Developer 2008 Express Edition。我无法打开跟踪功能。如果你能帮我解决这个问题,我会非常高兴! - Steven
Steven,请在aspx页面的顶部添加以下代码:<%@ Page Language="C#" Trace="true" ...%>,并确保在Web.Config中未将其关闭。 - H H
啊,我在想调试。会测试跟踪。 - Steven
articleList.aspx.cs的第17行是什么?我不确定是否有问题的是,设计师中的articleList类没有继承自TemplatePage。 - bloparod
3个回答

3

检查相关的.aspx.designer.cs是否存在

protected global::System.Web.UI.WebControls.Label lblTest;

是的,设计文件中有这段代码:protected global::System.Web.UI.WebControls.Label lblTest; - Steven

2

谢谢你们的帮助。

现在它可以正常工作了。 我删除了文件并创建了一个新文件,然后逐行添加。

我仍然不知道出了什么问题。 查看代码,它似乎与我最初开始的相同。


我点赞了这个回答,因为在本地测试时它是有效的,但是当我将其发布到网站上时问题仍然存在。现在撤销我的投票已经太晚了。 - user153923

1

这是一个 Web 应用程序项目(不是网站项目)吗?如果是(不是),请删除 *.designer.cs 文件,然后在 *.as*x 文件(您的页面或控件)的上下文菜单中 -> 转换为 Web 应用程序


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接