提交表单时执行后台处理

时间:2011-02-04 15:36:48

标签: c# .net asp.net-mvc

我有一个在用户提交表单时运行的操作方法。

图像URL与模型一起传递。

我希望能够对(下载的)图像执行某些处理,但我不希望此处理中的延迟会影响用户体验。

那么我怎样才能在后台进行这种处理,同时乐意提交表格呢? e.g:

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

3 个答案:

答案 0 :(得分:0)

在您收到图像之前,您无法更改用户的页面。

然而,在您对图像进行gt后,您可以在BackGroundWorker中执行所需的处理并提交页面。并让用户看到新的必需页面。

答案 1 :(得分:0)

在客户端显示一个忙碌的屏幕,让用户知道他正在等待文件下载。你可以实现这一点,即下载到一个单独的iframe并检查iframe的状态(for a dynamic approach see Dynamically created iframe used to download file triggers onload with firebug but not without

答案 2 :(得分:0)

您可以使用jQuery发布图像。完成后将调用您的回调。

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
            });
   }