日期:2014-05-18  浏览次数:20396 次

Url重写后图片路径问题
一般的情况下,我们是使用./../   这样的相对路径来确定和规划我们的资源(比如图片、资源文件),但这种方式下在我们部署应用的时候,可能会出错,另外对于.ascx的控件中如果包含了一个图片,而这个控件被我们在不同层次的两个目录的aspx文件分别引用时,问题就会出现了。  

  ~/image/book.jpg是一种非常好的方法,它以Web应用程序的根目录为起始点,这样使得比你使用../image/book.jpg这样的方式要更加灵活和方便。有一点不好,是这种方式只能被在ASP.NET的服务器控件中使用,html控件对这个是不能识别的,那么我们在部署时出现找不到图片路径,或者在执行URL重写时,虚假目录URL(RawUrl)经常改变,怎样保持图片路径的统一呢,我想到的办法是不管是html   控件还是服务器控件   统一用 "/Images/book.jpg ",这种方式对win2000,或win2003是非常有效的,但是win   XP的用户就头疼了,因为当我们把Images文件夹移到wwwroot根目录时,用 "/Images/book.jpg "时,html控件只有在运行时动态解析的,所以在IDE设计模式中,你不能预览它。但问题是在部署时移动执行文件或Url重写时图片可以正常显示,这才是重要的!

有经验的朋友可以讨论一下,有没有更好的方法?


------解决方案--------------------
绝对路径.新版URL可以设置页面的链接地址
------解决方案--------------------
MARK
------解决方案--------------------
only mark
------解决方案--------------------
在控件中提供对外的属性可以设置图片路径
------解决方案--------------------
jf
------解决方案--------------------
绝对路径
------解决方案--------------------
this.Page.ResolveClientUrl( "~/ ") 用这个
先用一个hidden把这个值传到后台,或者定义一个全局变量直接在后面调用
------解决方案--------------------
我一直正则替换。
------解决方案--------------------
这个问题我也考虑了 好久
------解决方案--------------------
我也遇到这个问题,目前都是使用绝对路径来处理的。
而不是使用../image/book.jpg或者image/book.jpg这种形式。

对于Html控件使用src= " <%=ResolveUrl( "../image/book.jpg ") %> "

对于服务器控件,则使用~/这种形式,会自动处理的。
------解决方案--------------------
偷偷告诉你,用函数,可以得到根路径,xp 还是 2003 通用:
public string GetBaseURL()
{
if (HttpContext.Current.Request.ApplicationPath == "/ ")
{
return @ "http:// " + HttpContext.Current.Request.Url.Host;
}
else
{
return @ "http:// " + HttpContext.Current.Request.Url.Host + HttpContext.Current.Request.ApplicationPath;
}
}
------解决方案--------------------
真的很麻烦啊,特别是皮肤ascx上的图片路径

有时不得不用 url= " <%=GetVirturlPath()%> images/a.gif "
这样子来取图片
------解决方案--------------------
顶!
------解决方案--------------------
呵呵
------解决方案--------------------
不停的尝试!!!!!!!!!!!!!!