停止母版自动更正或调整网址

时间:2010-02-24 14:25:32

标签: asp.net master-pages sitemap

如何阻止母版页自动更正或调整我的网址?我正在使用站点地图,当主页面在另一个目录中时,它会将其混乱到网址。

编辑我不想全局执行此操作,我想在单个母版页上执行此操作。

编辑2 我无法访问网址。它们由站点地图生成。

编辑3 当我的母版页位于\browsers\iphone\时。为链接生成的网址为\browsers\iphone\contact-us.aspx。当站点地图数据绑定到菜单时,值是正确的。

1 个答案:

答案 0 :(得分:1)

主页中的网址应该是相对于根目录的,或者使用波浪线 - 斜杠~/方法来指示网站根目录的路径。

如果您的母版页是/App_Master/MyMaster.master并且您有一些链接,请确保它们是:

<link rel="Stylesheet" type="text/css" href="/Path/From/The/Root.css" />
<script type="text/javascript" src="/Path/From/The/Root.js" ></script>

<a href="/Path/From/TheRoot.html">A non server-side link should start in forward slash and provide entire path</a>

<asp:HyperLink ID="MyHyperLink" runat="server" NavigateUrl="~/Path/to/Page.aspx" Text="Use the tilde-slash and use path from site-root"/>

而不是像:

<link rel="Stylesheet" type="text/css" href="../SomeRelative/Path.css" />
<script type="text/javascript" src="Path/Not/From/The/Root.js" ></script>

修改

您如何存储站点地图?标准的.net XML站点地图格式?站点地图中的网址应始终使用波浪线引用来自根的路径,例如~/My/Path.aspx

编辑2:

感谢您澄清数据源和格式。

问题的原因再次是存储在站点地图数据源(在本例中为SQL Server)中的URL不是基于站点根目录的路径。 asp.net站点地图的标准做法是将网址存储为~/mypage.aspx而不是mypage.aspx。这与所选的存储格式(xml与SQL数据库等)无关

我仍然建议您考虑使用~/mypath.aspx将数据库中的网址更新为root。这是标准做法。没有理由修改母版页类的功能以解析网址。

记住,从本质上讲,传统的html对待:

  • 相对网址mypage.aspx,如同在同一个文件夹中
  • 相对网址../mypage.aspx作为一个文件夹
  • 来自根
  • 的网址/mypage.aspx

ASP.NET以此为基础构建了一个额外的表示法:

  • 来自根
  • 的网址~/mypage.aspx

使用网址contact-us.aspx 应该本质上从当前页面构建,因为这甚至是标准html srchref路径的工作方式。如果您将sitemapdatasource和菜单放在一个普通页面上,嵌套在一个文件夹中,而忘记使用母版页,您会发现问题仍然存在。

很抱歉有争议,但是当数据源中的网址不符合~/path/to/some/file.aspx的简单格式时,我只是没有看到在网络上修改核心网址构建功能的价值。

如果我遗失某些东西,也许其他人可以插话......