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

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

  • 相关阅读:
    ionic cordova项目修改插件
    Java在云原生的破局利器——AOT(JIT与AOT)
    Linux之history、tab、alias、命令执行顺序、管道符以及exit
    良许翻天覆地的2022年
    显存优化综述
    Java中的抽象类和接口
    go开发之个人微信的二次开发
    【机器学习项目实战10例】(四):利用XGBoost实现短期电力负荷预测
    设计模式——备忘录模式(memento)
    阿里云2核2G服务器e系列租用优惠价格182元性能测评
  • 原文地址:https://blog.csdn.net/qq_24470501/article/details/126221970