對於MVC來說,這是一個更簡單的方法。 你需要使用Ajax的形式,並設置AjaxOptions
@using (Ajax.BeginForm("UploadTrainingMedia", "CreateTest", new AjaxOptions() { HttpMethod = "POST", OnComplete = "displayUploadMediaMsg" }, new { enctype = "multipart/form-data", id = "frmUploadTrainingMedia" }))
{
... html for form
}
這裏是提交代碼,這是在文件準備部分和領帶按鈕的onclick事件提交表單
$("#btnSubmitFileUpload").click(function(e){
e.preventDefault();
$("#frmUploadTrainingMedia").submit();
});
這裏是在AjaxOptions引用的回調
function displayUploadMediaMsg(d){
var rslt = $.parseJSON(d.responseText);
if (rslt.statusCode == 200){
$().toastmessage("showSuccessToast", rslt.status);
}
else{
$().toastmessage("showErrorToast", rslt.status);
}
}
在MVC它看起來像這樣
控制器方法
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult UploadTrainingMedia(IEnumerable<HttpPostedFileBase> files)
{
if (files != null)
{
foreach (var file in files)
{
// there is only one file ... do something with it
}
return Json(new
{
statusCode = 200,
status = "File uploaded",
file = "",
}, "text/html");
}
else
{
return Json(new
{
statusCode = 400,
status = "Unable to upload file",
file = "",
}, "text/html");
}
}
爲什麼不使用Ajax?使用jQuery Ajax函數,您可以定義這種回調。 – davidbuzatto 2012-07-18 05:30:30
davidbuzatto,有些情況下你不能使用ajax。例如,當你想上傳一個文件。 – Pere 2013-06-05 11:33:27
@Pere在這裏不是真的。 – SparK 2016-06-28 12:35:50