如何使 ASP.NET 母版页中的链接相对于使用该母版页的页面进行解析

  • 本文关键字:母版页 相对于 ASP 何使 NET 链接 asp.net
  • 更新时间 :
  • 英文 :


我已经找到了大量关于如何在应该使用绝对链接的母版页中更正相对链接使用的信息,但我还没有找到任何关于何时需要相对链接的信息。

我面临的情况如下:
我有一个 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 方法

最新更新