我已经找到了大量关于如何在应该使用绝对链接的母版页中更正相对链接使用的信息,但我还没有找到任何关于何时需要相对链接的信息。
我面临的情况如下:
我有一个 DataList 在我的母版页中充当导航栏,它链接到根目录中带有查询字符串的页面 ( SelectItem.aspx
)。我创建了一个名为 Admin
的目录,该目录将保存一个同名的页面。
我想实现以下行为:
当我从/OtherPage.aspx
单击导航栏链接时,我应该被带到/SelectItem.aspx
。
当我从/Admin/OtherPage.aspx
单击导航栏链接时,我应该被带到/Admin/SelectItem.aspx
。
无论母版页的位置如何,行为都应保持一致。
我当前的实现在目录/MasterPages/
中具有母版页,这会导致所有相对链接相对于该目录解析,而不是正在访问的页面的目录。
这似乎是一个坏主意,但您可以通过更改主节点的AppRelativeTemplateSourceDirectory
属性来实现:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
AppRelativeTemplateSourceDirectory = Page.AppRelativeTemplateSourceDirectory;
}
然后,将相对于内容页而不是主页解析母版页上的任何相对链接。
示例:
this.Page.ResolveClientUrl("~/path/to/some/page.aspx")
ResolveClientUrl 方法