2011-03-07 30 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