2014-02-25 35 views
0

我在asp.net使用Ajax文件上傳控件,並將其工作正常.Problem的是,當被加載的所有圖像complite然後我要重新加載相同的頁面。 我該怎麼辦?我的代碼如下。重定向頁面無法正常工作的Ajax文件上傳控制

<asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server" AllowedFileTypes="jpg,jpeg,png,gif" 
    MaximumNumberOfFiles="15" OnUploadComplete="File_Upload" Width="500px" OnClientUploadComplete="OnClientUploadComplete" 
    OnClientUploadError="showUploadError" /> 

<script type="text/javascript"> 
    function OnClientUploadComplete() { 
     $get("<%=lblMessage.ClientID%>").innerHTML = "File Uploaded Successfully Please refresh the page"; 

     // window.location = "ModelImageUpload.aspx"; 
     //$(location).attr('href', "ModelImageUpload.aspx"); 
      window.location = window.location.href; 

    } 
    function showUploadError(sender, args) { 
     alert(args.get_errorMessage()); 
    } 

    </script> 

C#代碼

protected void File_Upload(object sender, AjaxFileUploadEventArgs e) 
{ 
    lblMessage.Text = string.Empty; 
    string sqlMsg = string.Empty; 

    int count = 0; 
    clsModelImage objModImg = new clsModelImage(); 
    clsDataAccessLayer objDAL = new clsDataAccessLayer(); 
    string filename = e.FileName; 
    string ImgName = DateTime.Now.Ticks.ToString().Trim() + "_" + filename; 
    FileInfo oldfile = new FileInfo((ImgFolderPath) + ImgName); 
    if (oldfile.Exists) 
    { 
     oldfile.Delete(); 
    } 

    objModImg.modelId = Convert.ToInt32(ModelId); 
    objModImg.imageName = ImgName; 
    sqlMsg = objDAL.ModelImageUpload(objModImg); 
    if (sqlMsg == "1") 
    { 
     count++; 
     string ImgPath = Server.MapPath(ImgFolderPath); 
     AjaxFileUpload1.SaveAs(@ImgPath + ImgName); 
     lblMessage.Text = sqlMsg; 
     lblMessage.ForeColor = Color.Red; 
    } 
    else 
    { 
     //----- 

     //Response.Redirect("ModelImageUpload.aspx"); 
     // System.Web.UI.ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "Script", "OnClientUploadComplete();", true); 

     AjaxFileUpload1.Attributes.Add("OnClientUploadComplete", "Return OnClientUploadComplete"); 
     AjaxFileUpload1.BackColor = Color.Red; 


    }   

} 

回答

0

添加到您的AjaxUploadControl:

OnClientUploadComplete="ClientUploadComplete" 

那麼這部分保持爲是在服務器端:

AjaxFileUpload1.Attributes.Add("OnClientUploadComplete", "Return OnClientUploadComplete"); 

最後一部分是將此添加到您的客戶端腳本中:

 function ClientUploadComplete() { 
     var f = $(".filename").html(); 
     window.location.replace("upload.aspx?filename=" + f); 
    }