我有一个在用户提交表单时运行的操作方法。
图像URL与模型一起传递。
我希望能够对(下载的)图像执行某些处理,但我不希望此处理中的延迟会影响用户体验。
那么我怎样才能在后台进行这种处理,同时乐意提交表格呢? e.g:
ProcessImage(imageUrl); //do this in the background without delaying user experience
答案 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
});
}