刚刚看到blogcn上的有人遇到图片路径无法访问或找不到的问题.突然想起现在的网站的异常中也存在很多这样的错误信息,一直没有找到问题的原因,看了回复后发现原来是我一直在用"../../Content/images/xxx.jpg"这样的格式在书写路径信息,而ASP.NET MVC封装了Url.Conent("~/Content/images/xxx.jpg")这样的方法来访问图片,访问后的结果是/Content/images/xxx.jpg的路径,就自然会出现blogcn那位的发布到虚拟目录下路径无效的问题了。
查看了下MVC的源码声明如下:
public string Content(string contentPath) {
if (String.IsNullOrEmpty(contentPath)) {
throw new ArgumentException(MvcResources.Common_NullOrEmpty, "contentPath");
}
string appRelative = VirtualPathUtility.IsAppRelative(contentPath) ? contentPath : "~/" + contentPath;
return VirtualPathUtility.ToAbsolute(appRelative, ViewContext.HttpContext.Request.ApplicationPath);
}
页面上输入:
<img src="Content/images/xxx.jpg"/>
原来它判断传入的路径是否网站的根路径,如果不是自动在前面加入相对根路径“~/”字符串,然后转换为绝对路径进行输出显示,结果依然是
<img src="/Content/images/xxx.jpg"/>