我正在尝试在MVC中上传文件我使用了以下jquery代码来获取控制器上的文件。
$(document).ready(function () {
window.addEventListener("submit", function (e) {
var form = e.target;
if (form.getAttribute("enctype") === "multipart/form-data") {
if (form.dataset.ajax) {
e.preventDefault();
e.stopImmediatePropagation();
var xhr = new XMLHttpRequest();
xhr.open(form.method, form.action);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
if (form.dataset.ajaxUpdate) {
var updateTarget = document.querySelector(form.dataset.ajaxUpdate);
if (updateTarget) {
updateTarget.innerHTML = xhr.responseText;
}
}
}
};
xhr.send(new FormData(form));
}
}
}, true);
});
我从here
获取了此脚本它的工作文件,但是当我想运行一些其他jquery脚本时,不会在这里触发代码。
function OnUserSuccess() {
if ($("#UserDocumentID").val() == 0) {
mvcNotify.displayMessage("Record saved successfully.", "success");
} else {
mvcNotify.displayMessage("Record updated successfully.", "success");
}
}
我在Ajax.begin Form()
@using (Ajax.BeginForm("DocEdit", "User", new { EditUserID = ViewBag.EditUserID }, new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "UserPartialdiv", OnSuccess = "OnUserSuccess" }, new { enctype = "multipart/form-data", @class = "form-sm" }))
我不太了解jquery和mvc的新手也请礼貌。
答案 0 :(得分:1)
由于您已使用javascript submit
函数覆盖了MVC Ajax提交,因此您可以尝试在此成功回调中调用该方法
if (xhr.readyState == 4 && xhr.status == 200) {
if (form.dataset.ajaxUpdate) {
var updateTarget = document.querySelector(form.dataset.ajaxUpdate);
if (updateTarget) {
updateTarget.innerHTML = xhr.responseText;
}
//Call your method here
OnUserSuccess()
}
}
答案 1 :(得分:0)
在JQuery函数中,使用
var file = new File();
在此之后,您必须拥有上传按钮,在其上点击事件,获取文件。
var fileDate = $('#textboxId').value();
并通过ajax调用将此fileData发送到控制器
$.ajax(type: "POST",
url: '\YourController\yourFunctionName',,
data: { yourParameterNameInControllerFunction : fileData },
success: function() { alert('Success'); },
error: function() {alert('Error')});
您的控制器应如下所示
[HttpPost]
public ActionResult functionName(HttpPostedFileBase file) {
if (file.ContentLength > 0) {
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/giveyourdirectory"), fileName);
file.SaveAs(path);
}
return RedirectToAction("functionName");
}
这是上传所需的基本要求。