1

我有图像滑块,在 IE 中我有一个错误。

这是我的代码:

*//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();

你有什么想法吗?

4

2 回答 2

2

NRE可能是最容易理解的例外。当您没有进行足够的防御性编码时,这也是最常见的问题之一。

很简单,这意味着您正在尝试访问 null 对象的属性/方法。

在你的情况下

 slide[0].ToString();

任何一个

  • slide一片空白
  • slide[0]一片空白。

设置断点,调试您的应用程序。确定哪个是空的,或者考虑这一点(例如,使用默认值),或者如果该对象为空的情况确实是一个例外情况,则抛出一个更有意义的异常。

于 2013-04-04T11:28:22.647 回答
0

会话对象obrazky尚未初始化。

在之后添加一个空检查:

slide = (ArrayList)Session["obrazky"];
于 2013-04-04T11:26:53.260 回答