访问表单外部的输入文件

时间:2016-07-28 13:01:24

标签: html asp.net-mvc

我正在创建一个包含多个表单的小部件(带有选项卡式div)。每个表单都有多个输入,例如名称和描述。用户还可以上传照片。这里的问题是照片与所有表格共享。例如:

<div class="tabbedDiv">
  <div class="tab1">
     <form action="/Home/PostForm1" enctype="multipart/form-data" method="post">
       <input type="text" ...>
       <input type="text" ...>
       <input type="submit" value="Submit">
     </form>
  </div>
  <div class="tab2">
     <form action="/Home/PostForm2" enctype="multipart/form-data" method="post">
       <input type="text" ...>
       <input type="text" ...>
       <input type="submit" value="Submit">
     </form>
  </div>
  <div class="tab3">
     <form action="/Home/PostForm3" enctype="multipart/form-data" method="post">
       <input type="text" ...>
       <input type="text" ...>
       <input type="submit" value="Submit">
     </form>
  </div>
</div>


<div class="pull-right fileUpload btn btn-default" id="inputDiv">
  Upload
  <i class="fa fa-camera"></i>
  <input type="file" class="upload" id="imgInputNormal" name="imgInput[]" accept="image/*" multiple />
</div>

所以我的问题是当我发布其中一个表单(1,2或3)时,我无法访问控制器上的输入文件,因为文件输入不在任何形式内。如果我在每个表单上放置一个文件输入,那么所有文件只会被引用到同一个表单。就像我在开始时所说的那样,这些文件将独立于小部件表单。

这就是我获取表单文件的方式:

IFormFileCollection oCollection = Request.Form.Files;

所以关于如何共享文件输入的任何想法将是所有表单,以便在其中一个表单被提交时在我的控制器中获取这些相同的文件?

谢谢。

PS:如果我不够清楚,请告诉我。

1 个答案:

答案 0 :(得分:1)

如果您的用户都将使用符合HTML5标准的浏览器,我唯一能想到的就是一些肮脏的黑客,但它可能有用 - 将属性form="form1"添加到您的<input type="file"...> 。然后在选项卡更改时处理事件,并将form=属性更改为当前显示的表单的ID(您的表单将需要ID)。这应该将文件输入与当前显示的表单相关联,并使其与其余数据一起提交。

请参阅http://www.w3schools.com/tags/att_input_form.asp了解背景信息。