我正在创建一个包含多个表单的小部件(带有选项卡式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:如果我不够清楚,请告诉我。
答案 0 :(得分:1)
如果您的用户都将使用符合HTML5标准的浏览器,我唯一能想到的就是一些肮脏的黑客,但它可能有用 - 将属性form="form1"
添加到您的<input type="file"...>
。然后在选项卡更改时处理事件,并将form=
属性更改为当前显示的表单的ID(您的表单将需要ID)。这应该将文件输入与当前显示的表单相关联,并使其与其余数据一起提交。