MVC 5阻止表单提交时刷新页面

ArjaaAine

yBrowser:IE9技术:MVC5

我主要将Angular用于页面上的所有内容。(单页应用)。

但是因为我正在使用IE9,所以无法使用FileAPI。因此,我决定使用MVC的Form Actions在控制器方法中获取HttpPostedFileBase来处理文件上传。

HTML代码:(以模态形式出现)

@using (Html.BeginForm("UploadTempFileToServer", "Attachment", FormMethod.Post, new { enctype = "multipart/form-data", id = "attachmentForm" }))
{
    <div>
        <span id="addFiles" class="btn btn-success fileinput-button" ng-class="{disabled: disabled}" onclick="$('#fileUpload').click();">
            <span>Add files...</span>
        </span>
        <input id="fileUpload" type="file" name="files" class="fileInput" onchange="angular.element(this).scope().fileAdded(this)" />
    </div>
    <div>
        <span class="control-label bold">{{currentFilePath}}</span>
        <input name="fileUniqueName" value="{{fileUniqueName}}" />
        <input id="attachmentSubmit" type="submit" value="Upload File" />
    </div>
}

MVC控制器:

public void UploadTempFileToServer(IEnumerable<HttpPostedFileBase> files, string fileUniqueName)
    {
        var folderPath = fileStorageFolder;

        foreach (var file in files)
        {
            if (file.ContentLength > 0)
            {
                file.SaveAs(folderPath + fileUniqueName);
            }
        }
    }

问题1:有人知道不使用表单的Submit操作将HttpPostedFileBase数据发送到控制器的方法吗?

如果需要的话,我不介意使用Jquery。我尝试劫持表单的提交动作,但没有用。我尝试使用非提交按钮事件发送文件控件的数据,但也没有运气。

如果不:

问题#2如何在完成执行提交后阻止页面转到/ Attachment / UploadTempFileToServer?

ArjaaAine

因此,经过大量研究和尝试。这是我的解决方案:

使用https://github.com/blueimp/jQuery-File-Upload/wiki

HTML:

之前,我使用了隐藏文件上传控件,并通过跨度触发了单击。但是由于安全问题,由javascript打开的文件输入也无法由javascript提交。

<div class="col-md-7">
    <div class="fileupload-buttonbar">
        <label class="upload-button">
            <span class="btn btn-success btnHover">
                <i class="glyphicon glyphicon-plus"></i>
                <span>Add files...</span>
                <input id="fileUpload" type="file" name="files"/>
            </span>
        </label>
     </div>
</div>

Javascript:

$('#fileUpload').fileupload({
    autoUpload: true,
    url: '/Attachment/UploadTempFileToServer/',
    dataType: 'json',
    add: function (e, data) {
        var fileName = data.files[0].name;
        var ext = fileName.substr(fileName.lastIndexOf('.'), fileName.length);

        var attachment = {
            AttachmentName: fileName,
            Extension: ext
        }

        var fileUniqueName = id + ext;

        //Sending the custom attribute to C#
        data.formData = {
            fileUniqueName: fileUniqueName
        }

        data.submit().success(function (submitData, jqXhr) {
            attachment.Path = submitData.path;

            //Add the attachment to the list of attached files to show in the table.
            $scope.attachmentControl.files.push(attachment);
            //Since this is not a direct angular event.. Apply needs to be called for this to be bound to the view.
            $scope.$apply();

        }).error(function (errorData, textStatus, errorThrown) {

        });
    },
    fail: function (data, textStatus, errorThrown) {

    }
});

C#:

public virtual ActionResult UploadTempFileToServer(string fileUniqueName)
    {
        //Getting these values from the web.config.
        var folderPath = fileStorageServer + fileStorageFolder + "\\" + tempFileFolder + "\\";

        var httpPostedFileBase = this.Request.Files[0];
        if (httpPostedFileBase != null)
        {
            httpPostedFileBase.SaveAs(folderPath + fileUniqueName);
        }
        return Json(new
            {
                path = folderPath + fileUniqueName
            },
            "text/html"
        );
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在MVC中刷新页面

来自分类Dev

在React中阻止提交时刷新页面

来自分类Dev

PHP:无效表单提交时刷新页面

来自分类Dev

表单是否在提交时刷新页面?

来自分类Dev

单击后刷新页面-MVC 4

来自分类Dev

如何在MVC中刷新页面

来自分类Dev

没有刷新页面的Spring MVC帖子

来自分类Dev

提交表单而不刷新页面

来自分类Dev

Spring MVC Hibernate中刷新页面时如何添加更多购物车而不增加数量

来自分类Dev

阻止HTML表单提交刷新页面并触发另一个功能

来自分类Dev

刷新页面时表单重新提交的问题-在Wordpress中预览页面时

来自分类Dev

Ajax:提交多次后阻止刷新页面

来自分类Dev

在提交表单重定向到另一个页面时刷新页面

来自分类Dev

提交表单时如何避免刷新页面而又不致使页面滞后?

来自分类Dev

如何停止刷新页面中的表单提交按钮?

来自分类Dev

验证并提交表单,而无需刷新页面

来自分类Dev

提交表单而不刷新页面ajax,php,javascript?

来自分类Dev

表单提交刷新页面上的jQuery

来自分类Dev

为什么我的表单提交仍然刷新页面?

来自分类Dev

Ajax提交表单而不刷新页面

来自分类Dev

提交表单后,CodeIgniter刷新页面

来自分类Dev

无需重新提交表单即可刷新页面

来自分类Dev

在React前端中提交表单时重定向和刷新页面

来自分类Dev

使用Jquery,Ajax提交表单而不刷新页面时无法读取数据库

来自分类Dev

用户在JSP中刷新页面时如何避免重新提交表单

来自分类Dev

每次提交表单后刷新页面时,用户都会被注册

来自分类Dev

当我点击提交按钮 django 时,无法验证表单并刷新页面

来自分类Dev

如何防止MVC中下拉列表的选择更改时刷新页面

来自分类Dev

用新的查询字符串.... MVC刷新页面

Related 相关文章

  1. 1

    在MVC中刷新页面

  2. 2

    在React中阻止提交时刷新页面

  3. 3

    PHP:无效表单提交时刷新页面

  4. 4

    表单是否在提交时刷新页面?

  5. 5

    单击后刷新页面-MVC 4

  6. 6

    如何在MVC中刷新页面

  7. 7

    没有刷新页面的Spring MVC帖子

  8. 8

    提交表单而不刷新页面

  9. 9

    Spring MVC Hibernate中刷新页面时如何添加更多购物车而不增加数量

  10. 10

    阻止HTML表单提交刷新页面并触发另一个功能

  11. 11

    刷新页面时表单重新提交的问题-在Wordpress中预览页面时

  12. 12

    Ajax:提交多次后阻止刷新页面

  13. 13

    在提交表单重定向到另一个页面时刷新页面

  14. 14

    提交表单时如何避免刷新页面而又不致使页面滞后?

  15. 15

    如何停止刷新页面中的表单提交按钮?

  16. 16

    验证并提交表单,而无需刷新页面

  17. 17

    提交表单而不刷新页面ajax,php,javascript?

  18. 18

    表单提交刷新页面上的jQuery

  19. 19

    为什么我的表单提交仍然刷新页面?

  20. 20

    Ajax提交表单而不刷新页面

  21. 21

    提交表单后,CodeIgniter刷新页面

  22. 22

    无需重新提交表单即可刷新页面

  23. 23

    在React前端中提交表单时重定向和刷新页面

  24. 24

    使用Jquery,Ajax提交表单而不刷新页面时无法读取数据库

  25. 25

    用户在JSP中刷新页面时如何避免重新提交表单

  26. 26

    每次提交表单后刷新页面时,用户都会被注册

  27. 27

    当我点击提交按钮 django 时,无法验证表单并刷新页面

  28. 28

    如何防止MVC中下拉列表的选择更改时刷新页面

  29. 29

    用新的查询字符串.... MVC刷新页面

热门标签

归档