2011-02-04 21 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 
      }); 
    }