gpt4 book ai didi

asp.net - 相对于当前 URL 的超链接而不是用户控件的路径

转载 作者:行者123 更新时间:2023-12-02 18:38:15 25 4
gpt4 key购买 nike

我的网站上有一个页面,出于本示例的目的,可以说 http://myhost/Pages/Default.aspx 。在 Default.aspx 上,我有一个名为 MyControl.ascx 的用户控件,它位于/Controls/MyControl.ascx 中。所以这棵树看起来像这样

    • 页面
      • 默认.aspx
    • 控件
      • MyControl.ascx

每当我将 HyperLink 控件放在 MyControl.ascx 上并指定 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”进行编码

最佳答案

你有很多选择:

  1. 您可以使用 ~ 运算符对 Url 进行硬编码,该运算符为您提供根目录,然后从那里定义它,例如:~/Pages/AboutMe.aspx。请记住,~ 运算符仅在服务器控件和服务器代码中被识别。

  2. 您还可以使用 .. 到达您想要的位置,因为它将导航回文件夹结构,例如:../Pages/AboutMe.aspx

  3. 您可以创建一个辅助方法来返回页面文件夹、图像、Javascript 等的有效根目录...

  4. HttpRequest.ApplicationPath 将获取虚拟应用程序在服务器上的根路径,您可以使用它来构建。

有关路径选项的更多信息,您应该阅读 MSDN 上的这篇文章:

ASP.NET Web Project Paths

编辑:根据您对问题的编辑,您应该通过属性将相对 URL 传递到您的用户控件中。让使用该控件的页面定义其所需资源的相对路径。

关于asp.net - 相对于当前 URL 的超链接而不是用户控件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3567643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com