[英]Help needed declaring code-behind controls
可以-可以比预期的更快获得帮助。
我有一个ac#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;
}
并在VS创建的default.designer.cs页面中定义了albumID,albumTitle和albumKeyName控件。
干杯,
本
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";
}
}
它在NelloReferenceException的“ Hello World”行中出错-错误下方的详细信息说:“对象引用未设置为对象的实例。”
抱歉,该阵列-看起来像是一条红色鲱鱼。
您是否设置了断点并尝试逐步解决?
我的建议是,首先确保allLines
数组在访问Length
属性之前不为null。
另一个可能的原因是allLines的长度为0,因此从未创建相册。 (这意味着Albums[0].ID
将为NullReferenceException)。
只要三个控件确实存在于标记中,这看起来就可以看到您的标记。
有很多地方可能为空lineSplit
Albums[0]
, lineSplit
和allLines
都是空值的候选者。
您的<%@ Page %>
指令是什么样的? 您是否有机会使用CodeBehind
代替CodeFile
?
现在排序-仍然不知道错误是什么,但删除了文件并重新创建了文件,一切正常。
把它弄成一个令人沮丧的谜。 :-(
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.