我有一个在用户提交表单时运行的操作方法。在提交表单时执行后台处理
图像URL与模型一起传递。
我希望能够对(下载的)图像执行一些处理,但是我不想在此处理中延迟以影响用户体验。
那么我该如何在背景中做这个处理,同时愉快地提交表单?例如:
ProcessImage(imageUrl); //do this in the background without delaying user experience
我有一个在用户提交表单时运行的操作方法。在提交表单时执行后台处理
图像URL与模型一起传递。
我希望能够对(下载的)图像执行一些处理,但是我不想在此处理中延迟以影响用户体验。
那么我该如何在背景中做这个处理,同时愉快地提交表单?例如:
ProcessImage(imageUrl); //do this in the background without delaying user experience
直到你收到图像,你不能改变用户的页面。
但是,在您完成图像后,您可以在BackGroundWorker中执行所需的处理并提交页面。让用户看到新的需要的页面。
这可以作为一个异步方法来完成吗?该方法的完成与用户无关。我只是希望在用户提交表单后的某个时候进行图像处理。 – raklos 2011-02-04 16:37:55
在客户端显示一个忙碌的屏幕,让用户知道他正在等待文件下载。您可以通过下载到单独的iframe并检查iframe的状态来实现此目的(for a dynamic approach see Dynamically created iframe used to download file triggers onload with firebug but not without)
您可以使用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
});
}
你可以使用一个后台工作。 – safi 2011-02-04 15:44:12