1

我们正在 SharePoint 2010 中创建一个自定义品牌母版页。为了使该页面类似于旧版页面,我们实现了一个基于 html 的自定义下拉导航菜单,我们直接在母版页上(由基本的 HTML 元素 UL 和 LI 组成一个带有 CSS 类样式的标签)。

我认为来自页面上基本 HTML 的链接将受制于当前的备用访问映射,但似乎并非如此。在以 3 个不同 URL( http://sharepoint2010http://sharepoint2010.mydomain.comhttps://sharepoint2010.mydomain.com )打开的测试页面上,来自 WIKI 页面的链接已按预期进行了修改,但是自定义导航菜单中的链接(母版页上的纯 HTML)不会被修改。

我可以看到这在哪里有用......但是有没有一种方法可以让我在 MasterPage 上添加链接,让 SharePoint 首先解析它们,使它们受到备用访问映射转换的影响?我尝试在 SPLinkBut​​ton 控件中放置一个链接,但它没有达到预期的行为。

例如

<ul id="navmenu">
  <li><SharePoint:SPLinkButton runat="server" NavigateUrl="http://sharepoint2010">sharepoint link</SharePoint:SPLinkButton></li>
  <li><a href="http://sharepoint2010">sharepoint2010</a></li>
  <li>test</li>
</ul>

当我通过https://sharepoint2010.mydomain.com访问该页面时,上面的链接仍然是http://sharepoint2010而不是https://sharepoint2010.mydomain.com

有什么想法吗?

谢谢,

胜利者

编辑(澄清):我打算使用相对链接作为后备。但就我们所做的而言,如果我们可以保留完整链接并使用 AAM,它将更易于维护。我知道标准的相对链接是可能的。我希望通过提供特定的链接语法或控制框架来确定是否有办法在母版页内容(甚至是从外部服务检索的内容)上使用 AAM。

4

3 回答 3

2

There is no need to re-insert the host name if your links are on the same domain and you're not using managed paths. Keeping your links relative will ensure that any bindings in IIS and AAM setup in SharePoint will work without any additional work.

Otherwise, I would heavily suggest to use the available ~sitecollection and ~site SPUrl token to retrieve the current site collection url or current web url. You need to wrap it in anything running server side as the expression will be handled ... server side.

eg:

<asp:Literal runat="server" Text="<% $SPUrl:~site/press-releases/ %>"/>

Hope it helped

于 2012-04-08T19:49:17.627 回答
1

如果它只是您想要的相对链接,则完全省略 dns 条目(即您正在使用 AAM 切换的 url 的位)并以正斜杠开始 url 以使其相对。如果这不能满足您的需求,Sharepoint 的做法是使用相对 url 令牌。查看 v4.master 中的 tilda 字符,后跟“site”或“sitecollection”,分别表示当前的网站和网站集。复制这个方法。有关更多详细信息,请查看此链接:http: //msdn.microsoft.com/en-us/library/ms473643.aspx

于 2012-04-07T17:24:34.677 回答
1

当您使用 SPLinkBut​​ton 的 NavigateUrl= 属性时,SharePoint 会呈现一个带有 href= 的简单锚点,而不是常规的 PostBack JavaScript 代码。备用访问映射在这里不起作用。

于 2012-04-07T16:52:05.583 回答