页面生命周期,并且在尝试以编程方式创建控件时无法在page_init之外显示控件

时间:2010-11-28 13:59:29

标签: asp.net controls page-init

我正在创建一个用户可以将文件上传到网络服务器的页面。上传后,页面将显示刚刚上传的文件的链接,以及已上传的任何其他文件。

由于我正在以编程方式创建已上传文件的链接,因此我必须在page_init中执行此操作,否则链接按钮不会在单击时触发它的事件。我的网页完成了所有这些 - 它创建了链接按钮,当我点击它们时,它调用所需的事件方法,即下载文件的子。

好吧,我遇到的问题是:当我点击上传(上传文件)时 - 调用page_init子,将所有以前上传的文件显示为链接按钮。然后调用我的btnUpload_click子,它上传我当前的文件。

唯一的问题是当前文件尚未显示?我只能在page_init中显示链接,但是因为在page_init之后调用了btnUpload,所以当前文件在page_init之后才上传,因此不会被公开?

任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

  1. 将所有服务器端链接的列表作为您班级的成员:List<LinkButton> myLinks = new List<LinkButton>();

  2. 当您构建链接时,请不要将它们添加到页面中,而是将它们添加到列表中:myLinks.Add(oNewLink);

  3. 在btnUpload_Click方法中,使用正确的值添加到全局列表的新链接。

  4. 在Page_PreRender功能中添加指向页面的链接,该功能在单击按钮后发生。

  5. 如果您需要进一步帮助实现此逻辑,请告诉我。 :)

答案 1 :(得分:0)

如果您从Session变量或数据库中获取/保存以前上传的文件列表,那么在btnUpload_click事件结束时,您只需将页面重定向到自身即可。像Response.Redirect(“PageName.aspx”);