我正在构建一个ASP.NET UserControl,网站用户可以一次上传多张图片。我通过让用户输入所需的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);
}
}
}
}
任何人都有任何关于如何解决这个问题的提示? :)
提前致谢!
答案 0 :(得分:1)
您需要在每次回发时重新创建动态控件,否则它们将不再存在。
我建议您阅读this文章并了解有关page life cycle的更多信息。
答案 1 :(得分:0)
使用动态 FileUpload时,请记得手动设置Page.Form.Enctype =“multipart / form-data”;它是允许通过POST发送文件的编码类型 - 有关更多信息,请参阅What does enctype='multipart/form-data' mean?