SharePoint Solution开发自定义MasterPage

接触过Sharepoint开发的小伙伴,大部分应该都开发过Sharepoint Solution,在开发Sharepoint Solution的时候,咱们每每但愿咱们所开发的Page使用咱们本身的样式而不是使用Sharepoint自带的,所以就须要咱们本身自定义咱们的MasterPage。在自定义的过程当中主要包含两种自定义模式,一种是在自定义的Master Page中包含Sharepoint元素的,例如保留了Sharepoint自带的头部的toolbar,一种是彻底自定义的Master Page, 即不包含任何Sharepoint元素,本篇文章主要介绍一下第二种方式,彻底自定义Master Page。html

Sharepoint自身提供了Sharepoint Designer这个工具用来设计和管理Sharepoint中的相关元素,其中就包含了对Master Page的设计和管理,咱们能够经过Sharepoint Designer新建一个Blank Master Page, 如图所示:react


经过New Blank Master Page咱们能够建立出来一个名为test.master的不包含任何Sharepoint元素的Master Page, 以下所示:app

<%@ Master Language="C#" %>
<html dir="ltr">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled 1</title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
	<asp:ContentPlaceHolder id="PlaceHolderMain" runat="server">
        </asp:ContentPlaceHolder>
</form>
</body>
</html>复制代码

其中asp标签的内容你们能够理解为占位符,当咱们经过子页面引用master page的时候,就会用子页面中的内容来替换占位符的部分,例如咱们建立一个名为Index.aspx的Application Page,内部代码以下所示:工具

<%@ Page Language="C#" MasterPageFile="../../MasterPage/test.master" %>
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<asp:Content ContentPlaceHolderID="head" runat="server">
    <script src="test.js"></script>
</asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    this is content
</asp:Content>复制代码

如上所示的代码中,Index.aspx会以test.master为master page,页面中asp标签中ContentPlaceHolderID值为head的部分将会替换master page中的id为head的部分,值为PlaceHolderMain的部分将会替换master page中id为PlaceHolderMain的部分,这样当咱们将Solution部署到SP中,并访问index.aspx页面的时候就会以test.master 为整个页面的master page。ui

经过以上步骤咱们便完成了对自定义的Sharepoint Master Page的建立和引用,但愿以上内容对你们能有所帮助。this

例子代码:spa

test.master设计

<%@Master language="C#"%>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head runat="server">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
    <title>test</title>
</head>
<body>
    <div>
        This is Navigation
    </div> 
    <div>
        <asp:ContentPlaceHolder ID="PlaceHolderMain" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    <div>
        This is Footer
    </div>       
</body>
</html>
复制代码

Index.aspx:code

<%@ Page Language="C#" MasterPageFile="../../MasterPage/test.master" %>
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    this is index page
</asp:Content>
复制代码


Sharepoint Solution部署到Sharepoint Server的路径地址为:orm

C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\LAYOUTS

部署的站点的访问地址为:

http://host/sites/reactapp/_layouts/15/+文件夹路径

相关文章
相关标签/搜索