Gridview文件上传控件丢失文件时添加更多行ASP.Net,C#

时间:2015-05-05 10:27:29

标签: c# asp.net gridview

我正在使用带有fileupload的Gridivew,它具有添加更多行操作。 当我单击添加更多行时,fileupload控件将丢失该文件。 我需要将所有添加的行保存在单个提交按钮上,该按钮应保存文件夹上的所有文件。 请帮助我。

提前致谢

1 个答案:

答案 0 :(得分:0)

您不能在HTTPPost之后保留input type="file"状态。 (在ASP.NET术语中,这将转换为在PostBack之后无法持久化asp:FileUpload的值。

它旨在解决安全问题。 StackOverflow上有很多相同问题的例子(搜索它)。有一个Session hack提供了一个解决方法,但是它用于单个文件。点击此处:https://stackoverflow.com/a/18656681/17447

理论上你仍然可以使用Dictionary<int, FileUpload>来做到这一点。第一个参数是GridViewRow.RowIndex,第二个参数是该行的asp:FileUpload控件。您可以首先将第一个PostBack中的所有行添加到会话中,然后在file.HasFile等时更新它。但恕我直言,不要那样做,因为

  1. 非常复杂。
  2. 糟糕的用户体验,它让用户感到困惑。他不知道是否真的有档案。
  3. 极大地破坏了ViewState。
  4. 所以这些是你可以做的事情,

    1. 通过询问确认文件,提示用户点击添加文件时文件将丢失。
    2. 放置一个文本框和按钮,要求用户预先输入要添加的文件数。
    3. 使用第三方插件使用ajax添加行。(jqGrid和datatables.net很好。)