在用户控件中直接使用html的<img>标签将导致找不到图片,
一般的解决办法是使用<asp:imageI >服务器端控件,在ImageUrl 设置"~/images/red.png",这样就可以动态解析到正确的目录。
不过,当在不同层级的目录中使用LoadControl等方式,加上IIS设置了虚拟路径时,再次出现图片找不到的错误。
分析发现,无论调用都在哪个层次,地址始终被解析成了
src="../images/red.png",这会导致相对路径引用错误。
使用ResolveUrl可以解决这个问题,地址被正确的解析为src="/virtualpath/images/red.png"
又试验了ResolveClientUrl函数,发现也是解析成 src="../images/red.png"
说明ImageUrl 实际调用的是ResolveClientUrl。
不明白M$为什么这样设计,这么基础的控件,用起来都有陷阱