2011-11-18 61 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

相關問題