在mvc中上传后将请求重定向到同一页面

redirecting the request to the same page after upload in mvc

我对MVC上传比较陌生,所以稍微说明一下。我正在执行 ajax 上传操作。

上传操作完全正常,但上传后,它重定向到一个新页面,这是一个空白页面,我不知道如何阻止它这样做. 我也使用了 EmptyResult,但还是一样 happening.What 是我缺少的吗?

@using(Html.BeginForm())
{
 <input type="file" id="fileInput" />
<button onclick="startUpload();">Upload</button>
<br />
<progress id="progressBar" max="100" value="0" />
}
<script>



    function startUpload() {
        var fileInput = document.getElementById("fileInput");

        if (fileInput.files.length == 0) {
            alert("Please choose a file");
            return;
        }

        var progressBar = document.getElementById("progressBar");
        var xhr = new XMLHttpRequest();

        xhr.upload.onprogress = function (e) {
           // alert("in progress");
            var percentComplete = (e.loaded / e.total) * 100;
            progressBar.value = percentComplete;
        };

        xhr.onload = function () {

        };
        xhr.onerror = function () {

            alert("Error! Upload failed. Can not connect to server.");
        };
        xhr.onreadystatechange = function () {

        };
        progressBar.value = 0;
        xhr.open("POST", "/Home/Index", true);
        xhr.setRequestHeader("Content-Type", 'application / json');
        xhr.send(fileInput.files[0]);
    }
</script>


    [HttpPost]
    public EmptyResult  Index(FormCollection frm)
    {
        // Create JSON Response
        var jsonData = new
        {
            status = "success",
            message = "message"
        };
        return null;
                }

您可以在按钮的 onclick 函数调用中传递事件值,以便稍后像这样操作事件处理:

<button onclick="startUpload(event);">Upload</button>

然后在你的javascript中,你可以要求它忽略默认的事件处理(这种情况下提交表单):

 function startUpload(event) {
    //do all those stuff

    //event.preventDefault() should handle most of the browsers
    //but for better compatibility, it's 3 lines here
    if (event.preventDefault) event.preventDefault();
    event.returnValue = false;
    return false;
 }