2011-02-04 20 views
0

我有一個在用戶提交表單時運行的操作方法。在提交表單時執行後臺處理

圖像URL與模型一起傳遞。

我希望能夠對(下載的)圖像執行一些處理,但是我不想在此處理中延遲以影響用戶體驗。

那麼我該如何在背景中做這個處理,同時愉快地提交表單?例如:

ProcessImage(imageUrl); //do this in the background without delaying user experience 
+0

你可以使用一個後臺工作。 – safi 2011-02-04 15:44:12

回答

0

直到你收到圖像,你不能改變用戶的頁面。

但是,在您完成圖像後,您可以在BackGroundWorker中執行所需的處理並提交頁面。讓用戶看到新的需要的頁面。

+0

這可以作爲一個異步方法來完成嗎?該方法的完成與用戶無關。我只是希望在用戶提交表單後的某個時候進行圖像處理。 – raklos 2011-02-04 16:37:55

0

您可以使用jQuery發佈imageurl。完成後將調用您的回調。

function ProcessImageUrl(imgurl) 
{ 
    $.post('<%= Url.Action("AjaxProcessImage","AjaxFunctions") %>' 
     , { url: imgurl } 
     , function (data) { 
     if (data.success) { 
      alert("I'm done processing the image"); 
     } 
     else { 
      alert("Darn an error occurred: " + data.msg); 
     } 
    }); 
} 

在控制器稱爲AjaxFunctionsController

public ActionResult AjaxProcessImage(string url) 
    { 
     try 
     { 
      ProcessImage(url); 
     } 
     catch(System.Exception ex) 
     { 
     return Json(
       new 
       { 
        success = false, 
        msg = ex.Message 
       }); 
     } 

     return Json(
      new 
      { 
       success = true 
      }); 
    }