我目前正致力于为sharepoint实例生成母版页。但是,在尝试转换ASP转发器时会出现一些问题
以下内容适用于生成重复文本:
<!--MS:<asp:Repeater ID="TopMenu" runat="server" DataSourceID="selectedSiteMap">-->
<!--MS:<HeaderTemplate> -->
<!--ME:</HeaderTemplate> -->
<!--MS:<ItemTemplate> -->
<li><a href="" class="link">test</a></li>
<!--ME:</ItemTemplate> -->
<!--MS:<FooterTemplate> -->
<!--ME:</FooterTemplate> -->
<!--ME:</asp:Repeater> -->
<!--MS:<asp:SiteMapDataSource SiteMapProvider="CurrentNavigation" ShowStartingNode="false"
StartFromCurrentNode="false" StartingNodeOffset="0" StartingNodeUrl="sid:1002"
EnableViewState="true" ID="selectedSiteMap" runat="server" /> -->
但以下情况不起作用:
<!--MS:<asp:Repeater ID="TopMenu" runat="server" DataSourceID="selectedSiteMap">-->
<!--MS:<HeaderTemplate> -->
<ul id="main_menu_ul" class="">
<!--ME:</HeaderTemplate> -->
<!--MS:<ItemTemplate> -->
<li><a href=<!--MS:"<%# Eval("Url")%>"--> class="link">
<!--MS:<%# Eval("Title")%>--></a></li>
<!--ME:</ItemTemplate> -->
<!--MS:<FooterTemplate> -->
</ul>
<!--ME:</FooterTemplate> -->
<!--ME:</asp:Repeater> -->
<!--MS:<asp:SiteMapDataSource SiteMapProvider="CurrentNavigation" ShowStartingNode="false"
StartFromCurrentNode="false" StartingNodeOffset="0" StartingNodeUrl="sid:1002"
EnableViewState="true" ID="selectedSiteMap" runat="server" /> -->
到目前为止,我已确定问题是2折: 1.转换器不喜欢开口ul和闭合ul完全匹配的事实 2.转换器根本不喜欢eval标签。
任何人都可以帮助让这个中继器正常工作会非常有帮助。谢谢
答案 0 :(得分:2)
另一种可能性是您手动上传母版页(而不是使用功能部署它)。 &lt;%#Eval(“Url”)%&gt;标签被视为服务器端代码,事实证明,存在一个安全限制,即自定义页面中不允许使用服务器端代码 - 换句话说,就是无法托管的代码。
因此,如果您使用SharePoint设计器自定义母版页,则新副本存在于内容数据库中,这被视为自定义。
我最近打了这个 - 使用一个功能部署了一个aspx母版页(里面有一个转发器控件),下载一个副本,重新上传它(没有任何变化)和爆炸 - 错误。此文件中不允许使用代码块。
当你把它放在一个html母版页中时,你可能只是掩盖了错误的真正原因。您可以尝试在web.config中添加一个条目(例如,参见this blog),以指定您的母版页可以包含代码块。
答案 1 :(得分:0)
可能因为你已经打开了 MS:在你Eval之前(&#34;&#34;)但没有关闭ME:在eval标签之后。