Skip to main content
 首页 » 编程设计

c#之在 ASP.NET 问题中使用 jQuery AjaxForm

2024年01月12日36tintown

我正在使用 jQuery AjaxForm plugin 创建图像的预览我选择加载到服务器。 我使用 Http 处理程序创建用于图像预览的临时图像文件。 响应 FileUpload 控件的客户端“onchange”事件,图像预览已成功创建。

我有一个按钮可以将整个表单 (UploadImageToServerStep1.aspx) 发送到服务器。在该按钮的服务器端单击事件中,我尝试将控件转移到另一个页面(UploadImageToServerStep1.aspx2),控件获取到文件后面的另一个页面代码(控件获取到该页面 Page_Load 事件)但是页面不显示 - 而是再次显示引用页面 (UploadImageToServerStep1.aspx)(控件不执行该页面的页面加载事件)。

UploadImageToServerStep1.aspx中的JS代码是: <脚本类型=“文本 javascript”>

var 预览 = { ImagePreview: 函数(imageId) {

    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; 
 
    } 

有人可以写下这种行为的原因是什么以及我该如何解决这个问题

谢谢

请您参考如下方法:

当尝试执行 response.redirect 以响应 ajax 调用时,您的浏览器不会以与常规同步请求相同的方式运行。但是,您可以获取响应并在 JS 端对其进行处理。我相信这会对您有所帮助。

Returning redirect as response to XHR request