1

我正在开发一个中等规模的 ASP.NET 网络表单站点。内部链接等的 URL 通常使用如下语法设置:

<asp:HyperLink runat="server" NavigateUrl="~/Some/Path/MyPage.aspx" Text="Blah" />

这让我有点紧张,因为这些链接只是字符串,我担心如果我重命名或移动一个页面,我将无法追踪所有引用。

是否有一些 ASP.NET-y 方法来确定运行时的实际路径?我正在设想这样的事情:

NavigateUrl="<%= GetUrl(typeof(MyPage)) %>"
4

3 回答 3

1

您可以GetUrl根据文件夹结构的逻辑定义方法。假设您的命名空间确实对应于您的文件夹结构,则基本定义如下

public string GetUrl(System.Type CurrentType)
    {
      List<string> PathInNamespace = CurrentType.FullName.Split('.').ToList<string>();
      PathInNamespace.RemoveAt(0);
      return "/" + string.Join("/", PathInNamespace.ToArray());      
    }
于 2013-01-14T18:28:24.873 回答
0

一种非代码解决方案是创建自定义错误页面以链接到您网站的其他部分或在所述错误页面中插入搜索框。它快速、简单,还有助于 SEO。

于 2013-01-14T21:13:48.727 回答
0

您真正想要的是像 Umbraco、Sitecore、OpenText 等这样的 CMS。

但是,您可以自己使用数据库和具有 ID 和 Url 列的表来解决问题。然后你可以这样做:

NavigateUrl="<%= GetUrl("AwesomeLink") %>"

它可以进入数据库,查找 ID 并为您准备好链接。它还允许您在不重新编译的情况下更改链接。

它与您的想法相似,只是您仍然需要在某些时候告诉它您想要什么链接。它无法为你猜测。

于 2013-01-14T17:56:36.293 回答