ASP.NET将Web站点下的绝对路径转换为虚拟路径
ASP.NET将Web站点下的绝对路径转换为虚拟路径
2009-11-25 10:39
很经常使用到的一个功能,但在在网上却一直没有找到相关的解决方法,今天借着项目应用到的机会写了两个将绝对路径转换为虚拟路径封装好的方法
将Web站点下的绝对路径转换为相对于指定页面的虚拟路径
/**//// <summary>
/// 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径
/// </summary>
/// <param name="page">当前页面指针,一般为this</param>
/// <param name="specifiedPath">绝对路径</param>
/// <returns>虚拟路径, 型如: ../../</returns>
public static string ConvertSpecifiedPathToRelativePathForPage(Page page, string specifiedPath)
{
// 根目录虚拟路径
string virtualPath = page.Request.ApplicationPath;
// 根目录绝对路径
string pathRooted = HostingEnvironment.MapPath(virtualPath);
// 页面虚拟路径
string pageVirtualPath = page.Request.Path;
if (!Path.IsPathRooted(specifiedPath) || specifiedPath.IndexOf(pathRooted) == -1)
{
throw new Exception(string.Format("\"{0}\"是虚拟路径而不是绝对路径!", specifiedPath));
}
// 转换成相对路径
//(测试发现,pathRooted 在 VS2005 自带的服务器跟在IIS下根目录或者虚拟目录运行似乎不一样,
// 有此地方后面会加"\", 有些则不会, 为保险起见判断一下)
if (pathRooted.Substring(pathRooted.Length - 1, 1) == "\\")
{
specifiedPath = specifiedPath.Replace(pathRooted, "/");
}
else
{
specifiedPath = specifiedPath.Replace(pathRooted, "");
}
string relativePath = specifiedPath.Replace("\\", "/");
string[] pageNodes = pageVirtualPath.Split('/');
// 减去最后一个页面和前面一个 "" 值
int pageNodesCount = pageNodes.Length - 2;
for (int i = 0; i < pageNodesCount; i++)
{
relativePath = "/.." + relativePath;
}
if (pageNodesCount > 0)
{
// 如果存在 ".." , 则把最前面的 "/" 去掉
relativePath = relativePath.Substring(1, relativePath.Leng
相关文档:
问题:当一个正在执行中的ASPX页面执行到一半的时候,浏览器中你关闭了这个页面,服务器端对应的这个页面的代码仍然在执行么?
答案:除非你代码里面做了特殊判断,否则仍然正在执行。
注意点:
1、客户端显示页面的时候,后台已经执行完了的页面对象早已经不存在了。当然这时候谈不上服务器段执行不执行的问题了。
2、 ......
昨天就业部一美女老师在QQ上逮到我,问我是不是做过VBScript,并不由分说把我QQ告诉了一个在外地工作的学生,让她来咨询我,没办法了,硬着头皮找找解决方法。
原来这位软件工程师所在的项目组要做一个“跟微软差不多的远程Web界面连接”,大概项目经理是这么安排的:“他说用Javascript实现的功能没有那么 ......
VS2005调试asp.net端口号出错问题的解决方案
在Windows Server 2003用vs2005 sp1调试Asp.net程序的时候,突然页面不能显示出来,老是显示“网页无法显示”的页面,无奈用firefox调试了一段时间。
然后今天用ie调试的时候发现:IE地址栏里面显示端口号和桌面任务栏右下角“ASP.NET Deve ......
Table Web 服务器控件使您能够在 ASP.NET 页上创建可使用服务器代码进行编程的表。TableRow 和 TableCell Web 服务器控件提供显示 Table 控件的内容的方法。
一、背景
通常,表不仅用来显示表格信息,它还是在网页上格式化信息的一种方法。可以通过多种方法在 ASP.NET 页上创建表:
& ......
在网上搜查了很久,关于asp.net中多行文本框高度自适应内容的解决方法
<td style="width:700px" align=center valign=top>
<asp:TextBox runat="server" ID="txtContent" Width=100% ReadOnly=true Wrap=true TextMode="MultiLine" MaxLength="1073741823" BorderWidt ......