• ASP.NET按钮OnClick事件无法用JS触发


    要求:点击FileUpload控件上传图片之后,将图片显示在Image上,由于FileUpload没有选择图片后的事件,所以就给FileUpload加一个onchange事件,通过它来在JS中触发一个Button的点击事件,再在这个点击事件中处理显示图片的问题,在这里遇到两个问题:

    问题1:按钮的OnClick事件无法用JS触发;

    刚开始使用 var obj = window.document.getElementById("btnSelectedFile") ,alert一直返回空值,后来给Button加上Name属性后改为:
    var obj = window.document.getElementsByTagName("SelectedFile")
    终于拿到Button对象,但是使用无法调用Button的OnClick事件,摸索好久终于解决:

    解决办法:给按钮加上ClientIDMode="Static"属性

    aspx代码:

    1. <span style="display: none">
    2. <asp:Button ID="btnSelectedFile" ClientIDMode="Static" runat="server" OnClick="btnSelectedFile_Click"/>
    3. span>
    4. <asp:Image runat="server" ID="imageIcon"/>
    5. <asp:FileUpload ID="FileUploadImg" runat="server" onchange ="SelectImg()"/>

    JS代码:

    原因:在浏览器上,Button的ID会改变,所以使用getElementById拿不到对象, alert返回null,ClientIDMode="Static"就是设置它的ID不变,这样就可以调用Button的OnClick事件;

    问题2: 在后台拿到了FileUpload所选图片的绝对路径后,将它赋值给Image控件,但Image始终无法显示图片;

    原因:浏览器没有权限读取用户电脑磁盘数据;

    解决办法:先将图片保存到项目临时目录下,然后将这个临时目录的路径赋值给Image控件即可;

    1. string fileName = Path.GetFileName(FileUploadImg.PostedFile.FileName);
    2. if (!Directory.Exists(this.Server.MapPath("Temp/")))
    3. {
    4. Directory.CreateDirectory(this.Server.MapPath("Temp/"));
    5. }
    6. string serverPath = this.Server.MapPath("Temp/") + fileName;
    7. this.FileUploadImg.PostedFile.SaveAs(serverPath);
    8. imageIcon.ImageUrl = "Temp/" + fileName;

    记得加上处理删除临时图片的问题。

  • 相关阅读:
    可视化学习:如何用WebGL绘制3D物体
    如何爬取 python 进行多线程跑数据的内容
    合并石子问题-区间dp总结
    MATLAB使用绘图plot制作动态GIF
    1119 Pre- and Post-order Traversals
    ISO三体系认证有哪些意义和好处?
    TypeError: _wrap_socket() argument ‘sock‘ must be _socket.socket, not SSLSocket
    express-session使用demo,ts项目里新建模块使用nodejs运行时需要安装非ts模块
    5G/4G水资源遥控终端
    如何从base64中获取图像的宽度、高度、Uint8ClampedArray
  • 原文地址:https://blog.csdn.net/qq_24470501/article/details/126221970