1

我有一个文件上传控制器到 ftp 服务器。我想检索每个上传文件的文件名,并希望将其显示在与链接按钮相同的页面上。所以我想将链接按钮动态添加到页面。我已经这样做了。但是当上传多个文件时,它会替换先前添加的链接,并且仅将最后添加的文件显示为链接按钮。

  protected void UploadButton_Click(object sender, EventArgs e)
{
    string filename = Path.GetFileName(FileUploadControl.FileName);
    Session["f_name"] = filename;


    Panel1.Controls.Add(new LiteralControl("<div>"));
    LinkButton lb = new LinkButton();
    lb.Text = filename;
    lb.ID = filename;
    Session["lb_pdf"]=lb.Text;
    string pdf=(string)Session["lb_pdf"];
    Panel1.Controls.Add(lb);
    Panel1.Controls.Add(new LiteralControl("</div>"));
    lb.PostBackUrl = "Default2.aspx";

如何动态添加多个链接按钮?请帮忙

4

1 回答 1

1

您可以使用 aList<string>而不是单个字符串:

List<string> allFiles = new List<string>();
if(Session["f_name"] != null)
    allFiles = (List<string>)Session["f_name"];
else
    Session["f_name"] = allFiles;

allFiles.Add(filename);

foreach(string fileName in allFiles)
{
    // now create the LinkButtons ...
}

请注意,您必须在每次回发时重新创建所有动态创建的控件。因此,如果您可以从该页面回发而不使用UploadButton您应该使用Page_InitPage_Load重新创建旧的LinkButtons。这也是生命周期中更好的地方。

请参阅:真正了解动态控制(将动态控制添加到控制树)

于 2013-08-21T07:48:20.623 回答