[英]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.