繁体   English   中英

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

[英]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]lineSplitallLines都是空值的候选者。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM