本文主要介绍如何添加一个custom application page as site welcome page
1、首先创建一个sharepoint 2013 empty solution, add a custom application page(farm only)named MyHomePage.
2、自定义这个MyHomePage,显示所需信息,包括后台代码的编辑。
3、更改MyHomePage.aspx页面首页<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>为具体的assmebly info,例:
<%@ Assembly Name="MyHomePage, Version=1.0.0.0, Culture=neutral, PublicKeyToken=77a2aedaefb0d45b" %>
4、右键solution,添加一个module,named:HomePage, 替换module 下sample.txt为MyHomePage.aspx,同时修改里面的<%@ Page %>,
<%@ Page Language="C#" AutoEventWireup="true" Inherits="MyHomePage.Layouts.MyHomePage.MyHomePage" MasterPageFile="../_catalogs/masterpage/seattle.master" %>
指定具体的master file,不能DynamicMasterPageFile="~masterurl/default.master" ,同时去掉CodeBehind 标签,原因是copy这个页面没有后台。
module code:
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Module Name="HomePage" Url="Pages" > <File Path="HomePage\MyHome.aspx" Type="GhostableInLibrary" Url="MyHome.aspx" IgnoreIfAlreadyExists="FALSE" ReplaceContent="TRUE"> <Property Name="PublishingPageLayout" Value="~SiteCollection/_catalogs/masterpage/BlankWebPartPage.aspx, Blank Web Part page" /> </File> </Module> </Elements>
说明:Module name:HomePage,Url为Pages,Pages 是site 开启publishing feature之后sharepoint自动添加的一个page library,主要用于manage home or error SharePoint default pages.
重点需要说明的是<Property Name="PublishingPageLayout" Value="~SiteCollection/_catalogs/masterpage/BlankWebPartPage.aspx, Blank Web Part page" />这个property的作用是为这个MyHome.aspx页添加了一个PageLayout,
方便以后对这个homepage的添加与修改。
5、添加module的时候会默认在solution中add a feature,右键feature,添加feature EventReceiver,设置feature scope为site, 编辑FeatureActivated和FeatureDeactiving
FeatureActivated code:
public override void FeatureActivated(SPFeatureReceiverProperties properties) { SPSecurity.RunWithElevatedPrivileges(() => { SPSite site = properties.Feature.Parent as SPSite; using (site) { SPWeb web = site.RootWeb; web.AllowUnsafeUpdates = true; if (PublishingWeb.IsPublishingWeb(web)) { PublishingWeb pWeb = PublishingWeb.GetPublishingWeb(web); SPFile file = web.GetFile(web.ServerRelativeUrl + "/Pages/MyHome.aspx"); pWeb.DefaultPage = file; pWeb.Update(); } else { web.RootFolder.WelcomePage = "Pages/MyHome.aspx"; web.RootFolder.Update(); web.Update(); } web.AllowUnsafeUpdates = false; } }); }
注意:set welcome page的时候,需要check 当前的site是否开启了publishing feature,具体情况如上面代码所示。
FeatureDeactiving code:
public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { SPSecurity.RunWithElevatedPrivileges(() => { SPSite site = properties.Feature.Parent as SPSite; using (site) { SPWeb web = site.RootWeb; web.AllowUnsafeUpdates = true; if (PublishingWeb.IsPublishingWeb(web)) { PublishingWeb pWeb = PublishingWeb.GetPublishingWeb(web); SPFile file = web.GetFile(web.ServerRelativeUrl + "/Pages/Home.aspx"); pWeb.DefaultPage = file; pWeb.Update(); } else { web.RootFolder.WelcomePage = "Pages/Home.aspx"; web.RootFolder.Update(); web.Update(); } web.AllowUnsafeUpdates = false; } }); }
注意:deactive feature需要将site homepage设置成default page。
6、OK,一个完整set SharePoint homePage 的应用completly。
SharePoint2013 Set a custom application page as site welcome page
原文:http://www.cnblogs.com/qindy/p/6231869.html