2011-11-18 115 views
0

我想在不刷新所有页面的情况下上传文件。我知道上传不支持经典的Ajax表单。诀窍是使用一个经典的形式并对其进行渲染。如果ajaxform成功或失败,显示一条消息

这是我的观点:

@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

Controller中的UploadImage方法重定向到另一个操作。您应该返回JSON并显示一条消息。

public ActionResult UploadImage(HttpPostedFileBase file) 
{ 
    //processing code... 

    return Json(new { message = "Thank you..." }); 
} 

然后在View中只是提醒返回的消息。

+0

我们总是不得不返回一个带有ajax形式的Json对象吗?事实上,RedirectToAction(“EditProject”)是相同的页面。 – Bronzato

+0

不应该只是引用页面,而不是:return View(); – Abbas

+0

如何在视图中提醒返回的消息?我尝试$('#uploadform')。ajaxForm(function(message){alert(message);});这不起作用。 – Bronzato

相关问题