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代码:

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

JS代码:

<script type="text/javascript">
	function SelectImg() {
		var obj = window.document.getElementById("btnSelectedFile");
		//alert(obj);
		obj.click();
	}
</script>

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

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

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

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

string fileName = Path.GetFileName(FileUploadImg.PostedFile.FileName);
if (!Directory.Exists(this.Server.MapPath("Temp/")))
{
	Directory.CreateDirectory(this.Server.MapPath("Temp/"));
}
string serverPath = this.Server.MapPath("Temp/") + fileName;
this.FileUploadImg.PostedFile.SaveAs(serverPath);
imageIcon.ImageUrl = "Temp/" + fileName;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值