保存父页面时,在iframe中保存输入类型=文件

时间:2017-03-10 10:11:09

标签: javascript jquery html iframe razor

我在获取iframe中input type=file的值时遇到问题并将其传递给父表单,因此在保存父表单时,输入文件的值将异步保存。

尝试在控制器中添加HttpPostedFileBase Image = Request.Files["Image"];,但值始终为空

继承了iframe内容

 <div class="form-group">
            @Html.LabelFor(model => model.Image, new { @class = "control-label col-md-2 required" })
            <div class="col-md-10">
                <input type="file" name="Image" id="Image" style="display:none" />
                <input type="button" value="Upload File" id="alterFile" /> <label id="filename"></label>

                @Html.ValidationMessageFor(model => model.Image, "", new { @class = "text-danger" })
            </div>
        </div>

但每次我提交时,该字段的值为null,有没有办法获取Iframe内容并将其保存在父表单中?感谢

1 个答案:

答案 0 :(得分:1)

在您的示例中,您有一个文件输入和一个按钮。

我认为你希望保持输入的类型&#39; file&#39;隐藏在用户界面上,只需提供一个按钮,上面写着“上传文件”。

要使用javascript执行此操作,您可以执行以下操作:

&#13;
&#13;
var alterFile = document.getElementById('alterFile');
var fileInput = document.getElementById('Image');
var fileValue = document.getElementById('fileValue');
fileInput.addEventListener('change', function() {
  fileValue.textContent = fileInput.value; 
});

alterFile.addEventListener('click', function() {
  fileInput.click();
});
&#13;
<input type="file" name="Image" id="Image" style="display:none" />
<input type="button" value="Upload File" id="alterFile" /> <label id="filename"></label>
<label id="fileValue">Dummy Value</label>
&#13;
&#13;
&#13;

在更改处理程序中,您可以按照自己的意愿执行操作,例如将值传递给顶级iframe等