原文:SharePoint 2013 母版页修改后,无法添加应用程序

  问题描述:前一段时间尝试了一下将HTML文件转换为母版页,但是,用着用着又发现新的问题,我们转换的母版页,设置成默认母版页以后,无法添加应用程序,只有一个对话框一直加载。我们拷贝自带的母版页,修改Html同步master以后,也无法添加应用程序。如下图:

(一直显示“正在加载”的界面)

(正常的添加应用程序的页面)

  考虑了一下问题可能出现在哪儿,因为我是自己转换的母版页,所以我就Copy了一个自带的母版页,然后使用生成的master页面作为默认母版页,发现没有问题。但是,当我修改了Html文件以后,与之关联的master文件自然也被修改了,然后也出现了无法添加应用程序的问题。

  综上测试考虑,不是生成母版页的过程有问题,而是,我们修改html的时候,SharePoint2013自动修改master的过程中,是master页出现了异常情况。由于这样的问题的出现,建议大家如果想要通过html文件生成母版页的话,生成一次以后还是去修改master页,然后断掉关联删除html文件吧。除非你怕修改坏了,先留着html文件,因为随便修改下html文件保存,master文件都会回到初始的位置。

  好吧,前面一堆都几乎等于废话,下面我们来找一下,到底哪里出现了问题!其实排查问题很简单,只是对比一下两个文件,哪里不一样,然后覆盖回来不断尝试就可以了,只是比较耗时间和耗视力罢了。这么没技术含量的工作,我就不废话了,说说我的思路。

  首先,我怀疑头部引用有问题,把head部分全部覆盖,发现没有意义。然后,怀疑body部分有问题,依然全部覆盖,发现OK了。真好,这样我就把范围缩小到body里面了。然后看看里面几个比较大的div分别测试,发现<div id="s4-workspace">这个里面有问题,下面介绍一个比较不错的工具吧NotePad++,这个东西可帮了我大忙,尤其左右同事滚动对比,还是不错的,比记事本文件好用多了。

  经过不断的尝试,发现<div id="sideNavBox"这个div内的东西,都覆盖了,母版页就OK了,如下有截图,我们发现两个一样id的div,里面的东西大小查很多,其实,差点就是SharePoint:SPNavigationManager这段导航引用,把它添加到相应位置,即可。最后,还要把上面需要的几个PlaceHolder标签的不可见属性去掉,我们就大功告成了。

(附:对比图 点击图片看大图)

  附:完整的id="sideNavBox"Div的Html

<div class="ms-tableCell ms-verticalAlignTop">

<div id="sideNavBox" class="ms-dialogHidden ms-forceWrap ms-noList">

<a id="startNavigation" name="startNavigation" tabIndex="-1"></a>

<SharePoint:AjaxDelta id="DeltaPlaceHolderLeftNavBar" class="ms-core-navigation ms-belltown-sideNavDelta" BlockElement="true" runat="server">

<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server">

<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" runat="server" />

<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchTop" runat="server" />

<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" runat="server" />

<asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat="server" />

<asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat="server" />

<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchBottom" runat="server" />

<SharePoint:SPNavigationManager id="TreeViewNavigationManagerV4" runat="server" ContainedControl="TreeView" CssClass="ms-tv-box">

<SharePoint:SPLinkButton runat="server" NavigateUrl="~site/_layouts/15/viewlsts.aspx" id="idNavLinkSiteHierarchyV4" Text="<%$Resources:wss,treeview_header%>" accesskey="<%$Resources:wss,quiklnch_allcontent_AK%>"

CssClass="ms-tv-header" />

<SharePoint:DelegateControl runat="server" ControlId="TreeViewAndDataSource">

<Template_Controls>

<SharePoint:SPHierarchyDataSourceControl runat="server" id="TreeViewDataSourceV4" RootContextObject="Web" IncludeDiscussionFolders="true"/>

<SharePoint:SPRememberScroll runat="server" id="TreeViewRememberScrollV4" onscroll="javascript:_spRecordScrollPositions(this);" style="overflow: auto;">

<SharePoint:SPTreeView id="WebTreeViewV4" runat="server" ShowLines="false" DataSourceId="TreeViewDataSourceV4" ExpandDepth="0"

SelectedNodeStyle-CssClass="TREEVIEWSELECTEDCLASS" NodeStyle-CssClass="TREEVIEWNODECLASS" SkipLinkText="" NodeIndent="12"

ExpandImageUrl="/_layouts/15/images/tvclosed.png?rev=23" ExpandImageUrlRtl="/_layouts/15/images/tvclosedrtl.png?rev=23"

CollapseImageUrl="/_layouts/15/images/tvopen.png?rev=23" CollapseImageUrlRtl="/_layouts/15/images/tvopenrtl.png?rev=23"

NoExpandImageUrl="/_layouts/15/images/tvblank.gif?rev=23">

</SharePoint:SPTreeView>

</SharePoint:SPRememberScroll>

</Template_Controls>

</SharePoint:DelegateControl>

</SharePoint:SPNavigationManager>

</asp:ContentPlaceHolder>

</SharePoint:AjaxDelta>

</div>

</div>

  结束语:通过以上操作,我们基本可以完成母版页的搭建了,首先通过复制存在的Html母版页,然后调整的样式,添加css引用,基本都调整完毕了,可以加上SharePoint导航的引用,然后删掉html文件(防止我们的心血付之东流啊),或者复制一个改好的master页面断开连接也OK。如果通过html生成的母版页,或许我们覆盖<div id="s4-workspace">或者选择性的覆盖一部分比较实用。

SharePoint 2013 母版页修改后,无法添加应用程序的更多相关文章

  1. SharePoint 2013中修改windows 活动目录(AD)域用户密码的WebPart(免费下载)

    前段时间工作很忙,好久没更新博客了,趁国庆休假期间,整理了两个之前积累很实用的企业集成组件,并在真正的大型项目中经受住了考验:.Net版SAP RFC适配器组件和SharePoint 2013修改AD ...

  2. SharePoint 2013 母版页取消和HTML页关联

    前言:在新版本的SharePoint 2013上,有新的功能可以通过HTML导入母版页,然后HTML和Master页面相关联,更改HTML页的时候,Master会自动同步修改,然而,有些时候我们不需要 ...

  3. [SharePoint 2013 入门教程 2 ] 创建WEB应用程序,网站集,网站

    SharePoint 2013 的 Hello World 由大到小  创建WEB应用程序(老母),网站集(儿子),网站(孙子) 直接确定,其余都默认 填入标题,选好模板.网站集 儿子就有了. 点击页 ...

  4. SharePoint 2013 首页修改

    最近客户要求统一首页的风格,所以对各网站的首页进行了统一的修改. 1. 左边导航菜单修改: 修改的地方: Site Settings –> Look and feel –> Navigat ...

  5. SharePoint 2013 入门教程

    以下文章是自己在学习SharePoint的过程中,不断积累和总结的博文,现在总结一个目录,分享给大家.这个博客也是自己从SharePoint入门,到一个SharePoint开发的成长记录,里面记录的都 ...

  6. SharePoint 2013 入门教程--系列文章

    转:http://www.cnblogs.com/jianyus/p/3381415.html 以下文章是自己在学习SharePoint的过程中,不断积累和总结的博文,现在总结一个目录,分享给大家.这 ...

  7. SharePoint 2013 入门教程 [不断更新~]

    以下文章是自己在学习SharePoint的过程中,不断积累和总结的博文,现在总结一个目录,分享给大家.这个博客也是自己从SharePoint入门,到一个SharePoint开发的成长记录,里面记录的都 ...

  8. SharePoint 2013:解决添加域名后每次都需要登录的问题

    在SharePoint 2013中,当我们添加一个域名给SP后(添加域名的方法请参考此文:http://www.cnblogs.com/jianyus/archive/2013/08/10/32494 ...

  9. SharePoint 2013 删除母版页报错“This file may not be moved, deleted, renamed, or otherwise edited”

    在使用SharePoint 2013母版页的时候,我复制了一个seattle.master页面,然后想重命名一下发现报错,删除也报错,spd.页面分别试过签入签出以后均报错,错误如下: 尝试找了一下错 ...

随机推荐

  1. Android中TextView中内容不换行的解决方法

    问题 如果新建的Android项目采用的Android 3.0以上的SDK,同时采用了 <style name="AppTheme" parent="@androi ...

  2. volatile解析(转)

    Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在 ...

  3. POJ 3100 &amp; ZOJ 2818 &amp; HDU 2740 Root of the Problem(数学)

    题目链接: POJ:id=3100" style="font-size:18px">http://poj.org/problem? id=3100 ZOJ:http ...

  4. Android asynctask使用

    继承asynctask,有三个參数 三个參数的含义是第一个表示输入參数.第二个为progress,表示当前的进度,第三个为doInbackground    返回值 须要一个參数传入url,返回一个r ...

  5. 【j2ee spring】27、巴巴荆楚网-整合hibernate4+spring4(2)

    巴巴荆楚网-整合hibernate4+spring4(2) 1.图文项目 2.首先我们引入对应的jar包 这里用的是oracle 11g,所以我们使用的数据库连接jar包是ojdbc6, 的区别就是支 ...

  6. Java多线程的wait(),notify(),notifyAll()

    在多线程的情况下.因为多个线程与存储空间共享相同的过程,同时带来的便利.它也带来了访问冲突这个严重的问题. Java语言提供了一种特殊的机制来解决这类冲突,避免同一数据对象由多个线程在同一时间访问. ...

  7. 【原创】java中的父进程子进程 —— 坑爹的java Runtime.getRuntime().exec

    最近有一个需求,需要用一个java进程启动多个子进程来完成并发任务.由于必须给用户完成任务的反馈,所以需要父进程记录子进程的生命周期. exec方法返回一个Process对象,在当前进程内调用该对象的 ...

  8. mac开启22port

    mac开启22port 选择System prefrence -> sharing , 将remote login打开 測试是否打开 import socket s = socket.socke ...

  9. Javascript设计模式系列一

    定义类,方法赋值给prototype属性各种写法: 方法一: <script type="text/javascript"> ////定义Message类 var Me ...

  10. 自己定义actionbar

    android中的actionbar可提供自己定义view.详细是先写好自己定义view的布局,然后在代码中获取Actionbar对象.调用 setCustomView方法. 可是这样,它还是会显示前 ...