c# - ASP.NET 从动态添加的 FileUpload 控件中保存文件

标签 c# asp.net

我正在构建一个 ASP.NET 用户控件,网站用户可以在其中一次上传多张图片。我用老式的方式让用户输入所需的 FileUpload 控件的数量,然后将它们从 C# 动态添加到 asp:Panel 控件。

虽然这有效,但当用户单击“保存”按钮时,不会存储来自 FileUpload 的值/文件。我该如何解决这个问题?

我指定所需 FileUpload 控件数量的代码:

protected void btnSubmitImageAmount_Click(object sender, EventArgs e)
{
    int amountOfControls = Convert.ToInt32(txtImageAmount.Text);

    for (int i = 0; i < amountOfControls; i++)
    {
        FileUpload fUl = new FileUpload();
        Label lblLineBreak = new Label();
        lblLineBreak.Text = "<br />";
        fUl.ID = i.ToString();
        fUl.Visible = true;
        pnlUploadControls.Controls.Add(fUl);
        pnlUploadControls.Controls.Add(lblLineBreak);
    }
}

保存按钮的代码:

protected void btnCreateStory_Click(object sender, EventArgs e)
{
    List<Media> images = new List<Media>();

    foreach (Control ctrl in pnlUploadControls.Controls)
    {
        if (ctrl is FileUpload)
        {
           FileUpload fUl = (FileUpload)ctrl;
           Media media = UmbracoSave(fUl, storydDoc.Id);
           if (media != null)
           {
               images.Add(media);
           }
        }
    }
}

有人知道如何解决这个问题吗? :)

提前致谢!

最佳答案

您需要在每次回发时重新创建动态控件,否则它们将不复存在。

我建议阅读 this文章并了解有关 page life cycle 的更多信息.

关于c# - ASP.NET 从动态添加的 FileUpload 控件中保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4700365/

相关文章:

c# - Lambda 计算 IEnumerable 中字符串的出现次数

c# - Google directions api 网络服务 - 在 map 上显示响应。是否可以?

c# - 如何获得枚举数作为常量?

c# - 具有多级继承的 base.Method() 未被调用?

c# - 将 DLL 库引用添加到 VSX 中的项目

asp.net - 网站安全测试

asp.net - 在 GridView 中使用分页维护排序

c# - ASP.NET MVC 大型项目架构

c# - 两个程序集中具有相同名称的类(有意)

javascript - 如何从代码隐藏调用javascript函数