2011-03-07 43 views
2

使用jQuery给ajaxForm我使用jQuery AjaxForm plugin 创建图像的预览我的用户选择要加载到服务器。 我使用Http处理程序创建用于图像预览的临时图像文件。 为了响应FileUpload控件的客户端'onchange'事件,图像预览已成功创建。在ASP.NET问题

我有一个按钮,发送整个表格(UploadImageToServerStep1.aspx)到服务器。在该按钮的服务器端Click事件我尽量控制转移到另一个页面(UploadImageToServerStep1.aspx2),控制获取到其他页面的代码隐藏文件(控制获取到该网页Page_Load事件)但网页是不是显示 - 而是再次显示引用页面(UploadImageToServerStep1.aspx)(控件不会进入该页面的页面加载事件)。

在UploadImageToServerStep1.aspx JS代码是: <脚本类型= “文本/ JavaScript的”>

变种预览= { ImagePreview:功能(图像标识){

var formId = '<%= Form.ClientID %>'; 
    var fileUploadId = '<%= FileUpload1.UniqueID %>'; 
    var action = $('#' + formId).attr('action'); 
    var imageName = $("input[serverId = 'FileUpload1']").val(); 
    $('#' + formId).attr('action', './HttpHandlers/ImagesHandler.ashx?action=imagePreview&f=' + fileUploadId + '&i=' + imageName); 
    $('#' + formId).ajaxForm(function() { 
     $('#' + imageId).attr('src', './HttpHandlers/ImagesHandler.ashx?action=imagePreview&f=' + fileUploadId + '&i=' + imageName); 
     $('#' + imageId).show(); 
     $('#' + formId).attr('action', action); 
    }); 
    $('#' + formId).submit(); 
} 

}; </SCRIPT>/

在UploadImageToServerStep1.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 

     FileUpload1.Attributes.Add("onchange", "preview.ImagePreview('htmlImgPreview');"); 
     FileUpload1.Attributes.Add("serverId", "FileUpload1"); 

    } 
} 


protected void btnNext_Click(object sender, EventArgs e) 
{ 
    if (Page.IsValid) 
    { 
     Response.Redirect("UploadImageToServerStep2.aspx"); 
     //Server.Transfer("UploadImageToServerStep2.aspx"); 
    } 
} 

在HttpHandler的:

case "imagePreview": 
      string f = context.Request.QueryString.Get("f"); 
      string i = context.Request.QueryString.Get("i"); 

      const string uploadImageTempPath = "~/Images/TempImages/"; 
      if (!string.IsNullOrEmpty(context.Request.QueryString.Get("i")) && context.Request.Files[f] != null) 
      { 
       HttpPostedFile file = context.Request.Files[f]; 
       SaveImage(context, file, uploadImageTempPath, i); 
      } 
      context.Response.ContentType = GetContentType(context.Session["fileName"].ToString()); 

      if (context.Session["fileName"] == null || context.Request["i"] == null) 
      { 
       return; 
      } 

      byte[] byteArray1 = 
       System.IO.File.ReadAllBytes(
        context.Request.MapPath(string.Format("{0}{1}", uploadImageTempPath, context.Session["fileName"]))); 
      context.Response.BinaryWrite(byteArray1); 
      break; 

    } 

可有人请写什么是该行为的原因,我怎么能解决这个问题问题

谢谢

回答

0

当t为了响应ajax调用而执行response.redirect,您的浏览器将不会像使用常规的同步请求那样运行。然而,你可以在JS方面采取应对措施并采取措施。我相信这会帮助你。

Returning redirect as response to XHR request