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

时间:2016-03-18 17:39:58

标签: asp.net

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

我面临的情况如下:
我的主页中有一个DataList作为导航栏,它通过查询字符串链接到根目录中的页面(SelectItem.aspx)。我创建了一个名为Admin的目录,该目录将保存一个名称相同的页面。

我想实现以下行为:
当我点击/OtherPage.aspx的导航栏链接时,我应该转到/SelectItem.aspx 当我点击/Admin/OtherPage.aspx的导航栏链接时,我应该转到/Admin/SelectItem.aspx 无论母版页的位置如何,行为都应保持一致。

我当前的实现在目录/MasterPages/中有母版页,这导致所有相对链接相对于该目录进行解析,而不是正在访问的页面目录。

2 个答案:

答案 0 :(得分:1)

这似乎是一个坏主意,但您可以通过更改主AppRelativeTemplateSourceDirectory属性来实现:

protected override void OnPreRender(EventArgs e)
{
    base.OnPreRender(e);
    AppRelativeTemplateSourceDirectory = Page.AppRelativeTemplateSourceDirectory;
}

然后将相对于内容页面而不是主页面解析母版页上的任何相对链接。

答案 1 :(得分:0)

示例:

this.Page.ResolveClientUrl("~/path/to/some/page.aspx")

ResolveClientUrl method