如何阻止母版页自动更正或调整我的网址?我正在使用站点地图,当主页面在另一个目录中时,它会将其混乱到网址。
编辑我不想全局执行此操作,我想在单个母版页上执行此操作。
编辑2 我无法访问网址。它们由站点地图生成。
编辑3 当我的母版页位于\browsers\iphone\
时。为链接生成的网址为\browsers\iphone\contact-us.aspx
。当站点地图数据绑定到菜单时,值是正确的。
答案 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 src
和href
路径的工作方式。如果您将sitemapdatasource和菜单放在一个普通页面上,嵌套在一个文件夹中,而忘记使用母版页,您会发现问题仍然存在。
很抱歉有争议,但是当数据源中的网址不符合~/path/to/some/file.aspx
的简单格式时,我只是没有看到在网络上修改核心网址构建功能的价值。
如果我遗失某些东西,也许其他人可以插话......