我在运行时创建FileUpload
控件。当我点击LinkButton
时,会生成一个新的FileUpload
控件。
现在假设我从FileUpload
控件中选择了一个文件,然后点击LinkButton
。之前的FileUpload
控件失去了它的路径。但是,我正在维护我在运行时使用以下行创建的每个控件的ViewState:
f1.enableviewstate = true;
如何维护FileUpload
控件的选定文件?
答案 0 :(得分:2)
步骤
<input type=file>
(告诉用户文件已经上传(或者甚至是已禁用浏览按钮的只读文本框)文件上传控制 - 但是你将无法在其中显示正确的文件路径)出于安全原因,您无法以任何形式或形式操纵<input type=file>
。
哈哈方法
如果我理解正确,您的链接按钮会向页面添加其他文件上传控件。相反,我会在第一次创建足够数量的上传控件并只显示一个。其他人将被CSS隐藏。用户单击LinkButton后,它将只有客户端Javascript功能,可以显示其他控件。而另一个......和另一个......以及另一个......直到达到最大值。
复杂方法
但是,你可以通过使用更多的Javascript以更多的Web 2.0-ish以不同的方式实现它。但是,您应该通过<iframe>
答案 1 :(得分:2)
正如其他一些人所提到的,由于安全问题,您无法保留FileUpload的视图状态。 你可以做的只是在FileUpload下面添加一个Label。当用户单击链接按钮以生成新的FileUpload时,将触发回发,您可以检查页面上存在的FileUpload控件是否具有某些值(即用户已选择要上载的文件),如果是, ,您可以直接开始上传该文件并在标签上显示结果(路径或文件名),只是用户知道他已经添加了该文件。您还可以隐藏文件上传量,另外添加删除链接以再次删除上传的文件(与Gmail类似)。
希望这会有所帮助。
树里
答案 2 :(得分:1)
您无法在文件上传输入标记中预先选择文件路径(安全相关 - 用户必须选择文件),因此.Net无法从viewstate填充值
答案 3 :(得分:0)
Controls
属性中。这样做可确保其状态序列化为ViewState
。希望这会有所帮助......
答案 4 :(得分:0)
按照我的说法,没有办法在asps.net中保存fileupload的viewstate。
你可以将它的值存储在隐藏字段,会话等文件中你无法将该值分配给再次文件上传,因为它是只读的