我想在不刷新所有页面的情况下上传文件。我知道上传不支持经典的ajax表单。诀窍是使用经典形式并对其进行调整。
以下是我的观点:
@model .....
@using (Html.BeginForm("UploadImage", "Admin", FormMethod.Post, new { enctype = "multipart/form-data", id = "uploadform" }))
{
<div class="editor-label"> @Html.LabelFor(model => model.Image) </div>
<div class="editor-field"> <input type="file" name="file" id="file" /> </div>
<button type="submit">
<span>Upload</span>
</button>
}
这是我的javascript:
$(document).ready(function() {
$('#uploadform').ajaxForm(function () {
alert("Thank you for your comment!");
});
});
这是我的控制器:
[HttpPost]
public ActionResult UploadImage(HttpPostedFileBase file)
{
// Add code here...
return RedirectToAction("EditProject");
}
当我提交文件时,控制器中的操作会收到信息。但接下来什么也没发生。消息“谢谢你的评论!”永远不会显示。 如果上传成功失败,我想显示一条消息。
感谢。
答案 0 :(得分:0)
Controller中的UploadImage方法重定向到另一个操作。您应该返回带有要显示的消息的JSON。
public ActionResult UploadImage(HttpPostedFileBase file)
{
//processing code...
return Json(new { message = "Thank you..." });
}
然后在View中只提醒返回的消息。