在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;
}
我对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;
}