需要帮助声明代码隐藏控件

时间:2010-01-05 22:16:55

标签: c# asp.net

好的 - 早点回来寻求帮助。

我有一个c#web项目,我的控件出现问题。我正在尝试做一些非常简单的事情 - 只需更改页面上的几个标签。

当我尝试构建项目时,它出现NullReferenceException错误,我认为这可能是因为我没有正确地声明控件。

我对c#很新,所以任何帮助都会非常感激。

我使用的代码是:

protected void Page_Load(object sender, EventArgs e)
    {
         string[] allLines = File.ReadAllLines(Server.MapPath("Albums.txt"));
         Album[] Albums = new Album[allLines.Length];
         for (int i = 0; i < allLines.Length; i++)
         {
           string[] lineSplit = allLines[i].Split(',');
           Albums[i] = new Album();
           Albums[i].ID = Convert.ToInt32(lineSplit[0]);
           Albums[i].title = lineSplit[1];
           Albums[i].keyName = lineSplit[2];
       }

        this.albumID.Text = Convert.ToString(Albums[0].ID);
        this.albumTitle.Text = "Hello World";
        this.albumKeyName.Text = Albums[0].keyName;           
   }

,albumID,albumTitle和albumKeyName控件在VS创建的default.designer.cs页面中定义。

干杯,

PS - aspx标记:

<body>
<form id="Form1" runat="server">
    <asp:Label ID="albumID" runat="server" Text="Label"></asp:Label>
    <asp:Label ID="albumTitle" runat="server" Text="Label"></asp:Label>
    <asp:Label ID="albumKeyName" runat="server" Text="Label"></asp:Label>
</form>

为了尝试找出问题,我删除了一大堆代码,只留下以下内容:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        this.albumTitle.Text = "Hello World";          
   }
}

在带有NullReferenceException的“Hello World”行上出错 - 错误下面的详细信息说:“对象引用未设置为对象的实例。”

对阵阵感到抱歉 - 看起来像是红鲱鱼。

4 个答案:

答案 0 :(得分:1)

您是否设置了断点并试图单步执行它?

我的建议是首先确保allLines数组在访问Length属性之前不为空。

另一个可能的原因是allLines长度为0,因此没有创建过专辑。 (这意味着Albums[0].ID将是NullReferenceException。)

答案 1 :(得分:0)

只要标记中存在三个控件,这看起来没有看到你的标记。

有许多地方可能为空 - Albums[0]lineSplitallLines都是空的候选地。

答案 2 :(得分:0)

您的<%@ Page %>指令是什么样的?您是否有机会使用CodeBehind代替CodeFile

答案 3 :(得分:0)

现在排序 - 仍然不知道错误是什么,但删除了文件并重新创建它们并且一切正常。

把它弄成一个令人沮丧的谜团。 : - (