ASP母板页与内容页的异目录使用
2012-11-06 18:27
204 查看
所谓异目录就是只母板页与内容页不在同一目录。
实现的关键技术技术:html的base标签
关键技术讲解:
base的href规定页面中所有相对链接的基准 URL。其值是个绝对路径。我实现的方法是取 协议+主机名+端口号+路径。
不过,这样设置了之后会存在二个问题。
第一:页面回发的时候会出错。出错的根本原因是回发的原理。其根本原理是表单的提交,而form表单的action是当前页面的名字。
解决方案:action指定绝对路径
第二:内容页的链接不能采用相对路径。
解决方案:Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('/')+1)获得其所在路径
好了,下面附上完整步骤:
1.在母板页head部分添加标签
<base id="baseHref" runat="server" />
注意:runat="server"一定不可少,要在后台修改其href值
2.母板页后台填加函数setBaseHref,在 Page_Load 中掉用,可以是做页面是否是回发判断,影响不大。
/// <summary>
/// 设置母板页的路径
/// </summary>
/// <param name="path">
/// 从根目录开始,母板页的路径
/// 如母板页所在路径为~/Admin/*.Master
/// 则path应为Admin
/// </param>
void setBaseHref(string path)
{
//给base标签href属性设置母板页所在目录
string url = Request.Url.ToString();
string serverPath = url.Substring(0, url.IndexOf("/", url.IndexOf("://") + 3) + 1);
serverPath += path + "/";
baseHref.Attributes["href"] = serverPath;
//找到form元素,并给action赋绝对路径
HtmlForm myForm = null;
foreach (Control c in Controls)
{
if("HtmlForm".Equals(c.GetType().Name))
{
myForm = (HtmlForm)c;
break;
}
}
myForm.Action = Request.Url.ToString();
}
3.内容页添加有相对路径,或使用有相对路径的跳转时。
后台 Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('/')+1)
前台<%= Request.Url %>/../
获得当前内容页所在目录。
实现的关键技术技术:html的base标签
关键技术讲解:
base的href规定页面中所有相对链接的基准 URL。其值是个绝对路径。我实现的方法是取 协议+主机名+端口号+路径。
不过,这样设置了之后会存在二个问题。
第一:页面回发的时候会出错。出错的根本原因是回发的原理。其根本原理是表单的提交,而form表单的action是当前页面的名字。
解决方案:action指定绝对路径
第二:内容页的链接不能采用相对路径。
解决方案:Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('/')+1)获得其所在路径
好了,下面附上完整步骤:
1.在母板页head部分添加标签
<base id="baseHref" runat="server" />
注意:runat="server"一定不可少,要在后台修改其href值
2.母板页后台填加函数setBaseHref,在 Page_Load 中掉用,可以是做页面是否是回发判断,影响不大。
/// <summary>
/// 设置母板页的路径
/// </summary>
/// <param name="path">
/// 从根目录开始,母板页的路径
/// 如母板页所在路径为~/Admin/*.Master
/// 则path应为Admin
/// </param>
void setBaseHref(string path)
{
//给base标签href属性设置母板页所在目录
string url = Request.Url.ToString();
string serverPath = url.Substring(0, url.IndexOf("/", url.IndexOf("://") + 3) + 1);
serverPath += path + "/";
baseHref.Attributes["href"] = serverPath;
//找到form元素,并给action赋绝对路径
HtmlForm myForm = null;
foreach (Control c in Controls)
{
if("HtmlForm".Equals(c.GetType().Name))
{
myForm = (HtmlForm)c;
break;
}
}
myForm.Action = Request.Url.ToString();
}
3.内容页添加有相对路径,或使用有相对路径的跳转时。
后台 Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('/')+1)
前台<%= Request.Url %>/../
获得当前内容页所在目录。
相关文章推荐
- android JNI使用AAssetManager读取asset目录内容
- 使用glob模块输出目录内容 分类: python 小练习 2013-09-17 18:16 248人阅读 评论(0) 收藏
- 使用NSFileManager枚举目录中的内容(遍历目录)
- 使用NSFileManager枚举目录种的内容(遍历目录)
- 使用glob模块输出目录内容
- 源程序List1.java,展示了如何使用list()方法来检查一个目录的内容的实例
- Python使用os.listdir()函数来得目录内容的介绍
- 使用IIS7.0建站出现“HTTP 错误 403.14 - FORBIDDEN WEB 服务器被配置为不列出此目录的内容”错误的解决方法
- 使用目录内容建立菜单
- 使用NSFileManager枚举目录种的内容(遍历目录)
- 要求使用 IIS 6.0 动态内容时 " HTTP 错误 404 - 文件或目录找 " 错误信息
- 帮助文档或使用说明Chm文档打开后,目录都在,内容为空白,如何解决?
- Linux使用命令查看某个目录的内容技巧
- 通过nginx配置目录可以使用url访问里面的内容
- 如何使用FTP下载、上载文件和如何列出目录内容。
- 使用NSFileManager枚举目录种的内容(遍历目录)
- 使用NSFileManager枚举目录种的内容(遍历目录)
- Python使用os.listdir()函数来得目录内容的介绍
- 多线程-使用队列统计目录下的文件的内容行数
- python---列表返回偶数列表、url内容、多列表最大值、目录下文件、列表的extend使用