输入类型文件,onchanges事件将在返回后再次触发

时间:2018-12-05 12:31:22

标签: c# html asp.net-mvc

我正在使用c#mvc应用程序来开发我的网站。

以下代码给了我一些问题,因为我打算在用户选择要上传的文件后触发上传。因此,我在文件上传中应用了更改事件。

<form style="display:inline;" enctype="multipart/form-data" action="/Admin/AddImage" method="post" id="uploadImageForm">
  <input hidden name="listing_id" value="@Request.QueryString["id"]"/>
  <label for="file-upload" style="width :120px" class="btn btn-default custom-file-upload">
    <input name="uploaded_image" id="file-upload" type="file" onchange="document.getElementById('uploadImageForm').submit();" />
           Add Image
  </label>
</form>

好的,这很好。但是,当我在Chrome浏览器上单击“后退”按钮时,此愚蠢的事件将再次触发,因此两次上传。我如何防止这种情况发生。

问题是,当我单击返回时,该事件将在bodyonload时触发。因此输入文件具有缓存,因此它将触发另一次上传

1 个答案:

答案 0 :(得分:0)

客户端:您可以使用添加到客户端     通过从历史记录中删除页面来限制用户使用浏览器的后退按钮。

history.pushState(null, null, document.title);
window.addEventListener('popstate', function () {
    history.pushState(null, null, document.title);
});