好的 - 早点回来寻求帮助。
我有一个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”行上出错 - 错误下面的详细信息说:“对象引用未设置为对象的实例。”
对阵阵感到抱歉 - 看起来像是红鲱鱼。
答案 0 :(得分:1)
您是否设置了断点并试图单步执行它?
我的建议是首先确保allLines
数组在访问Length
属性之前不为空。
另一个可能的原因是allLines长度为0,因此没有创建过专辑。 (这意味着Albums[0].ID
将是NullReferenceException。)
答案 1 :(得分:0)
只要标记中存在三个控件,这看起来没有看到你的标记。
有许多地方可能为空 - Albums[0]
,lineSplit
和allLines
都是空的候选地。
答案 2 :(得分:0)
您的<%@ Page %>
指令是什么样的?您是否有机会使用CodeBehind
代替CodeFile
?
答案 3 :(得分:0)
现在排序 - 仍然不知道错误是什么,但删除了文件并重新创建它们并且一切正常。
把它弄成一个令人沮丧的谜团。 : - (