2010-01-05 3 views
0

OK - 예상보다 빨리 도움을 받으십시오.코드 숨김 컨트롤 선언에 도움이 필요함

저는 C# 웹 프로젝트를 가지고 있으며 컨트롤에 문제가 있습니다. 꽤 간단한 작업을하려고합니다. 단지 한 페이지에 두 개의 레이블 만 바꾸는 것입니다.

프로젝트를 만들 때 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 - 영문 마크 업 :

<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

우리는 aspx 마크 업을 볼 수 있습니까? 어떤 줄에 오류가 표시됩니까? <폼 ID = "Form1에"RUNAT = "서버"> womp

+0

다음은 영문 마크 업입니다 ID = "ALBUMTITLE"RUNAT = "서버"텍스트 = "라벨"> Ben

+0

공 -하지 않았다 형식이 너무 좋다! 주요 질문에 대한 수정 사항으로 추가합니다. – Ben

답변

1

중단 점을 설정하고 스테핑을 시도 했습니까?

제안 사항은 allLines 배열이 null이 아니며 먼저 Length 속성에 액세스해야합니다.

또 다른 가능한 원인은 allLines 길이가 0이므로 앨범이 생성되지 않았기 때문일 수 있습니다. 즉 Albums[0].ID은 NullReferenceException이됩니다.

+0

앨범 ID와 앨범 키 이름 줄을 주석 처리하여 테스트를 시도 했으므로 배열을 "만지"는 것이 아니라 여전히 동일한 오류가 발생했습니다. – Ben

+0

allLines 선언에 중단 점을 설정하고 메서드를 단계별로 실행하면 오류가 발생하는 행을 알 수 있습니까? 메서드에서 멀리 떨어져 있지 않다면 다음 가능한 원인은 allLines가 null이고 해당 Length 속성에 액세스하려고하는 것입니다. – Brandon

+0

그것을 보면 배열이 붉은 청어라고 생각합니다. albumTitle을 "hello world"로 설정 한 행을 제외한 모든 행을 삭제하고 해당 행에서 동일한 오류가 계속 발생하도록 편집했습니다. – Ben

0

3 개의 컨트롤이 마크 업에 존재하는 한 마크 업을 보지 않고도 괜찮아 보입니다.

null 일 수있는 곳이 많습니다. - Albums[0], lineSplitallLines은 모두 null을 사용할 수 있습니다.

+0

내가 잘못 생각할 수도 있지만 lineSplit은 IndexOutOfRangeException을 던집니다. 그렇지 않습니까? NullReferenceException이 아닌가? – Brandon

0

<%@ Page %> 지시문은 어떻게 생겼습니까? 혹시 CodeFile 대신 CodeBehind을 사용하십니까?

0

지금 정렬 - 여전히 오류가 무엇인지 알 수 없지만 파일을 삭제하고 다시 만들면 모두 정상적으로 작동합니다.

초라한 수수께끼에 잠급니다. :-(

관련 문제