asp.net System.NullReferenceException:

asp.net System.NullReferenceException:,asp.net,file-upload,Asp.net,File Upload,我有一份关于文章出版的申请。我正在尝试制作表格以插入一篇文章。我想做一个文件上传部分。我正在使用datalist,想上传一篇文章。问题在于代码隐藏,它向我显示了以下错误: System.NullReferenceException:对象引用未设置为实例 指一个物体 您不能直接从datalist2访问任何控件,必须遍历每个datalist项 foreach (DataListItem item in datalist2.Items) { FileUpload FileUploadArtik

我有一份关于文章出版的申请。我正在尝试制作表格以插入一篇文章。我想做一个文件上传部分。我正在使用datalist,想上传一篇文章。问题在于代码隐藏,它向我显示了以下错误:

System.NullReferenceException:对象引用未设置为实例 指一个物体


您不能直接从datalist2访问任何控件,必须遍历每个datalist项

foreach (DataListItem item in datalist2.Items)
{
    FileUpload FileUploadArtikull = (FileUpload)item.FindControl("FileUploadArtikull");

    if (FileUploadArtikull.HasFile)
    {
        int filesize = FileUploadArtikull.PostedFile.ContentLength;
        if (filesize > 4194304)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "alert('Max 4MB');", true);
        }
        else
        {
            string filename = "artikuj/" + Path.GetFileName(FileUploadArtikull.PostedFile.FileName);
            //add parameters
            command.Parameters.AddWithValue("@filename", filename);

            conn.Open();
            command.ExecuteNonQuery();
            conn.Close();
            Bind();

            FileUploadArtikull.SaveAs(Server.MapPath("~/artikuj\\" + FileUploadArtikull.FileName));
            Response.Redirect("dashboard.aspx");

        }
    }
    else
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "alert('ERROR');", true);
    }

}

我猜你已经在数据列表项中控制了文件上传,对吗?如何控制?我不明白你能给我看完整的Asp:dataList标记代码吗?刚刚编辑了我的代码。请看一看。我不熟悉这种语言fileupload FileUploadArtikull=FileUploaddatalist2.FindControlFileUploadArtikull;这条线怎么样?对吗?不对。请看我回答的第二行。使用item而不是datalist2即使我上传了一个文件,它也会转到第三个else。为什么?请不要忽略我的评论:我真的需要一些帮助,可能是你的流程不正确。调试每一行,使用上面提到的答案可以让您访问fileupload控件。
foreach (DataListItem item in datalist2.Items)
{
    FileUpload FileUploadArtikull = (FileUpload)item.FindControl("FileUploadArtikull");

    if (FileUploadArtikull.HasFile)
    {
        int filesize = FileUploadArtikull.PostedFile.ContentLength;
        if (filesize > 4194304)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "alert('Max 4MB');", true);
        }
        else
        {
            string filename = "artikuj/" + Path.GetFileName(FileUploadArtikull.PostedFile.FileName);
            //add parameters
            command.Parameters.AddWithValue("@filename", filename);

            conn.Open();
            command.ExecuteNonQuery();
            conn.Close();
            Bind();

            FileUploadArtikull.SaveAs(Server.MapPath("~/artikuj\\" + FileUploadArtikull.FileName));
            Response.Redirect("dashboard.aspx");

        }
    }
    else
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "alert('ERROR');", true);
    }

}