【发布时间】:2010-08-25 15:34:34
【问题描述】:
我的网站上有一个页面,就本示例而言,假设为http://myhost/Pages/Default.aspx。在 Default.aspx 上,我有一个名为 MyControl.ascx 的用户控件,它位于 /Controls/MyControl.ascx 中。所以树看起来像这样
- 根
- 页数
- 默认.aspx
- 控件
- MyControl.ascx
- 页数
每当我在 MyControl.ascx 上放置一个 HyperLink 控件并指定一个 NavigateUrl 时,此路径都是相对于控件的,而不是页面的 URL。例如,如果我在 NavigateUrl 中指定了“AboutMe.aspx”,则 URL 将呈现为 http://myhost/Controls/AboutMe.aspx 而不是 http://myhost/Pages/AboutMe.aspx。有什么办法可以使这个相对于页面 URL?我在这里尝试了解决方案:Relative path from an ASP.NET user control NavigateUrl,但它对我不起作用。
编辑
为了澄清,我希望它足够通用,以便如果我不知道解决方案的路径是什么,那么解决方案会起作用。所以我真的不想在 NavigateUrl 中硬编码“~/Pages/Default.aspx”
【问题讨论】:
-
请分享 HyperLink 控件的更新代码。我面临同样的问题,我使用控件的地方不是固定的。所以不能硬编码
~\xyx\xyz\myControl.aspx?url。我想要我页面中的相对 url。 -
@SunnyRGupta 我最终只是将 runat="server" 添加到我的所有 标记中,然后使用“~”运算符获取应用程序根目录(请参阅下面 Kelsey 回答中的#1)。尽管将 URL 作为属性传递肯定会起作用。自从我发布这篇文章以来已经有大约 2 1/2 年了,我对我到底想用这个问题完成什么有点生疏了:)
-
感谢您的回复,我已经解决了这个问题。对于通过 Google 访问此页面的其他人,这是我所做的:使用“/pathtopage/page.xyz”从根目录使用链接
标签: asp.net