文件单独上载并维护其他控件的状态

时间:2011-06-17 21:42:56

标签: asp.net-mvc asp.net-mvc-3 file-upload razor

我有一个使用Razor的MVC 3应用程序。表单是数据驱动的,有一系列测试框和单选按钮以及文件上传控件。文本框和单选按钮位于第一种形式,上传控件采用自己的形式。如果首先上传文件,那么一切都很好。但是,如果用户填写带有文本框和单选按钮的表单,然后浏览到要附加的文件并单击第二个表单中的附加(提交按钮),整个页面将被回发并且所有控件都会丢失其值和它不是用户的直觉。当我试图将文件上传并在服务器上上传文件作为表单上的单独任务时,我无法在网上找到任何这样的场景示例。我找到的只是人们在一个子操作中执行elemnet和文件上传。我的要求是文件上传保持独立,以便用户可以附加文件并删除附加的文件,因此只有当他们满意时才提交表单。欢迎任何指示。

1 个答案:

答案 0 :(得分:1)

这是您可以尝试的方法,它似乎适合您的方案:

  1. 使用AJAX(或Flash / Silverlight / HTML5)上传文件以避免重新加载页面。有许多插件和可能性:pluploaduploadifyjquery form,...,只需选择一个适合您的插件。
  2. 当用户上传文件时,将其存储在某个临时位置的服务器上,并返回一个唯一的ID,以便以后可以获取此文件。
  3. 在客户端上使用id将其注入第一个表单(包含所有文本框和无线电的表单)的隐藏字段中。
  4. 当用户提交第一个表单时,上传文件的ID将被发送到服务器,您将能够获取上传的文件。
  5. 此方法还可以允许您上传多个文件。只需使用jQuery并操作隐藏字段数组(添加,删除......)。