我有一个MVC 3应用程序,这是一个部分视图(位于视图),它有一个按钮,显示上传文件的div。
div是一个表单(正如我提到的,它是视图的一部分),当我提交表单时,控制器代码正在上传文件,我希望关闭div。这一切都发生了,但除此之外,一个新的选项卡被打开。
视图代码:
$("#btnUpload").click(function () {
$('#UploadFile').submit();
$("#UploadFileDiv").hide();
});
@using (Html.BeginForm("UploadFile", "Maintenance", FormMethod.Post, new { enctype = "multipart/form-data", id = "UploadFile", target = "_blank" }))
{
<div id="UploadFileDiv" align="center" class="MyPopup" style="width: 500px; height: 250px; position: absolute; top: 100px; left: 270px;">
<br />
<table>
<tr>
<td>
<input type="file" name="myFile" id="btnFile" style="width:200px" />
</td>
</tr>
</table>
<br />
<div align="center">
<a class="Infobutton" id="btnUpload">Upload</a>
<a class="Infobutton" id="btnCancel">Cancel</a>
</div>
</div>
}
控制器代码:[HttpPost]
public ActionResult UploadFile()
{
//Some code...
string csvFileName = selectedMenu.ResourceFolder + "_" + selectedPage.ResourceFileName + ".csv";
Request.Files["langFile"].SaveAs(csvPath);
//return RedirectToAction("Index");
//return false;
//return Json(false);
return Json("File was uploaded");
}
"return"注释是我已经尝试做的,以防止出现新的窗口
我试图在我的javascript中做以下事情,以防止新窗口:
function UploadFile_NEW() {
$('#UploadFile').submit(function (e) {
$.ajax({
type: "POST",
cache: false,
async: true,
url: '@Url.Action("UploadFile", "Maintenance")',
data: $('form').serialize(),
dataType: "json",
success: function (response) {
alert(response.Status);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (errorThrown == "Forbidden") {
alert("Forbidden access");
} else {
alert('An error occurred please retry.');
}
}
});
});
$("#UploadFileDiv").hide();
}
不工作(表单未提交)
有什么办法可以防止文件上传时打开新窗口吗?
注意:我有一个类似的下载文件的形式,它工作得很好
谢谢
delete:
target = "_blank"
从@using (Html.BeginForm("UploadFile", "Maintenance", FormMethod.Post, new { enctype = "multipart/form-data", id = "UploadFile", target = "_blank" }))
应该是:
@using (Html.BeginForm("UploadFile", "Maintenance", FormMethod.Post, new { enctype = "multipart/form-data", id = "UploadFile"}))