我写的是
protected void btnUpload_Click(object sender, EventArgs e)
{
HttpFileCollection fileCollection = Request.Files;
for (int i = 0; i < fileCollection.Count; i++)
{
HttpPostedFile uploadfile = fileCollection[i];
string fileName = Path.GetFileName(uploadfile.FileName);
if (uploadfile.ContentLength > 0)
{
uploadfile.SaveAs(Server.MapPath("~/UploadFiles/") + fileName);
lblMessage.Text += fileName + "Saved Successfully<br>";
hyperlnk.Text = fileName.ToString() + "Saved Successfully<br>";
// hyperlnk.Attributes.Add("href", Server.MapPath("/UploadFiles/") + fileName);
hyperlnk.NavigateUrl="~/UploadFiles/" + fileName;
//lblMessage.Text= "<a href=" + "/UploadFiles/" + fileName +">"+fileName+"</a>";
}
}
}
当我们上传多个文件时,其中只有一个显示在链接中,如屏幕截图所示
请帮帮我
答案 0 :(得分:1)
您似乎有一个超链接对象,可通过名为hyperlnk
的变量访问。
如果您想拥有多个链接,则需要创建多个链接。
(您可以看到所有标签文字,因为您在循环的每次迭代中将附加添加到标签文本中,而您替换超链接text / url。你不能只是附加到超链接,因为你想要有几个独立的链接。)
答案 1 :(得分:1)
我认为你需要在每次迭代时创建1个超链接,而不是在每次迭代时为同一个超链接指定不同的值。
E.g:
for (int i = 0; i < fileCollection.Count; i++)
{
HyperLink link = new HyperLink();
link.Text = "whatever";
form1.Controls.Add(link);
}
我会通过添加显示链接的必要代码来扩展这个示例,但我并不熟悉Web窗体。
答案 2 :(得分:0)
您需要在页面上添加Panel类型的面板而不是超链接,并将其用于链接的容器,代码如下所示:
panel.Controls.Clear();
for (int i = 0; i < fileCollection.Count; i++)
{
HttpPostedFile uploadfile = fileCollection[i];
string fileName = Path.GetFileName(uploadfile.FileName);
if (uploadfile.ContentLength > 0)
{
uploadfile.SaveAs(Server.MapPath("~/UploadFiles/") + fileName);
lblMessage.Text += fileName + "Saved Successfully<br>";
HyperLink dynamHyperLink = new HyperLink();
dynamHyperLink.Text = fileName.ToString() + "Saved Successfully<br>";
// hyperlnk.Attributes.Add("href", Server.MapPath("/UploadFiles/") + fileName);
dynamHyperLink.NavigateUrl = "~/UploadFiles/" + fileName;
panel.Controls.Add(dynamHyperLink);
//lblMessage.Text= "<a href=" + "/UploadFiles/" + fileName +">"+fileName+"</a>";
}
}