2013-04-04 92 views
1

我有圖像滑塊,並在IE中我有一個錯誤。NullReferenceException是由用戶代碼未處理

這是我的代碼:

*//Složka s obrázky partnerů 
string slozka = HttpContext.Current.Server.MapPath("~/Partneri"); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    int cislo_obrazku = 0; 
    if (!Page.IsPostBack) 
    { 
     ArrayList slide = new ArrayList(); 
     System.IO.DirectoryInfo inputDir = new System.IO.DirectoryInfo(slozka); 
     foreach (FileInfo eachfile in inputDir.GetFiles()) 
     { 
      slide.Add(eachfile.ToString()); 
      cislo_obrazku += 1; 
     } 
     Session["cislo_obrazku"] = cislo_obrazku; 
     Session["obrazky"] = slide; 
     Casovac(this, new EventArgs()); 
    } 
} 

protected void Casovac(object sender, EventArgs e) 
{ 
    ArrayList slide = new ArrayList(); 
    slide = (ArrayList)Session["obrazky"]; 
    if ((Session["aktualni"] != null) && (Convert.ToInt32(Session["aktualni"]) != Convert.ToInt32(Session["cislo_obrazku"]) - 1)) 
    { 
     //Posun na další 
     Image1.ImageUrl = "~\\Partneri\\" + slide[Convert.ToInt32(Session["aktualni"]) + 1].ToString(); 
     Session["aktualni"] = Convert.ToInt32(Session["aktualni"]) + 1; 
    } 
    else if (Session["aktualni"] == Session["cislo_obrazku"]) 
    { 
     //Pokud není další, začni znovu 
     Image1.ImageUrl = "~\\Partneri\\" + slide[0].ToString(); 
     Session["aktualni"] = 0; 
    } 
    else 
    { 
     if (Convert.ToInt32(Session["cislo_obrazku"]) != 0) 
     { 
      //Initally load the first image in the image control 
      Image1.ImageUrl = "~\\Partneri\\" + slide[0].ToString(); 
      Session["aktualni"] = 0; 
     } 
    } 
} 

錯誤:NullReferenceException was unhandled by user code

錯誤指向這一點:

Image1.ImageUrl = "~\\Partneri\\" + slide[0].ToString(); 

Image1.ImageUrl = "~\\Partneri\\" + slide[0].ToString(); 

有你一些想法?

+1

這不是經典的asp。您應該將其標記爲asp.net和C# – John 2013-04-04 11:11:51

+1

您是否檢查過幻燈片[0]不爲空? – OldProgrammer 2013-04-04 11:26:10

+1

很顯然,'幻燈片'幻燈片[0]'是'null' – 2kay 2013-04-04 11:26:56

回答

0

會話對象obrazky尚未初始化。

添加一個空檢查後:

slide = (ArrayList)Session["obrazky"]; 
+0

空檢查?怎麼樣? – koky 2013-04-04 12:27:06

+0

'if(slide == null || slide [0] == null)' – jgauffin 2013-04-04 12:53:41

+0

再次出錯...我沒有寫完所有的代碼,現在代碼在上面被編輯,它的全部... – koky 2013-04-04 13:13:53

2

NRE可能是最容易理解的例外。當你沒有足夠的防守編碼時,這也是最常見的問題之一。

非常簡單,它意味着您正試圖訪問一個null對象的屬性/方法。

在你的情況

slide[0].ToString(); 

要麼

  • slide是空
  • slide[0]爲空。

設置斷點,調試你的應用程序。確定哪一個是空的,並且要麼解釋爲那個(例如,用一個默認值),要麼拋出一個更有意義的異常,如果它確實是該對象爲空的例外情況。

相關問題