ASP.NET中 使用Server.Transfer转移到别的地址;或使用自定义控件时。会出现相对地址不一定的情况。这时使用图片,Css文件或其他与相对路径相关的资源,就会出错。
处理这种情况需要使用代码。需要在Page上定义这样一个属性
- public string CurrentPath
- {
- get
- {
-
- string fileBase = HttpContext.Current.Request.PhysicalApplicationPath;
- string askFile = HttpContext.Current.Request.PhysicalPath;
- if (!askFile.Contains(fileBase))
- return string.Empty;
- string xdpath = askFile.Replace(fileBase,"");
- xdpath = xdpath.Replace('//', '/');
- int lasPos = 0;
- string rT = string.Empty ;
- for (int i = 0; i < xdpath.Length; i++)
- {
- if (xdpath[i] == '/')
- {
- if (lasPos != i)
- rT += "../";
- lasPos = i;
- }
- }
-
- return rT;
- }
- }
该属性能够自动监测客户端页面的地址,生成相对路径。如果你有自定义的Page类,那么写在MyPage上会更方便。
使用时把原来的地址变为<%= CurrentPath +"从根开始的相对路径" %>
例如原来有一个背景图片: style="background-image:url('Imags/loginBg.jpg');"
需要修改为:style="background-image:url('<%= CurrentPath +"Imags/loginBg.jpg"%>');"