设为首页 收藏本站
查看: 1202|回复: 0

[经验分享] SharePoint 2010开发工具图解系列:Visual Studio 2010创建事件接收器

[复制链接]

尚未签到

发表于 2015-9-29 11:05:59 | 显示全部楼层 |阅读模式
练习 :创建用于响应事件错误的URL重定向



在此次练习中,您将创建一个错误页面,以便在用户遇到错误时可被重定向到该页面。取消事件已在WSS 3.0中被引入,但取消并将用户重定向到一个错误页面是WSS“14”新增的功能。
  新建一个空白的SharePoint项目。启动Visual Studio 2010,选择文件» 新建项目,并按如下操作步骤新建一个空白项目。
项目类型: 已安装的模板» SharePoint » 2010
模板: 空白SharePoint项目
名称: CustomErrorPage
  在SharePoint 自定义向导中,输入之前步骤创建的网站的URL地址(http://moss.contoso.com/sites/Lab03),来将其作为调试用网站,然后,勾选部署为场解决方案复选框。
  首先,要创建一个事件接收器,用于将当前网站中的子网站数量限制为2个。这需要为当前项目添加一个新的项目条目。在解决方案资源管理器工具窗口中,右击CustomErrorPage项目,并选择添加» 新建项。在SharePoint » 2010模板列表中选择事件接收器,并将其命名为MaxSubSitesReceiver
DSC0000.png
然后,该向导对话框将提示您设置该事件接收器的属性。使用如下操作步骤完成向导操作:


  • 当提示设置需要哪种类型的事件接收器时,选择Web 事件
  • 当提示设置处理以下事件时,选正在配置网站。
    DSC0001.png

  打开MaxSubSitesReceiver\MaxSubsitesReceiver.cs代码文件。将WebAdding事件处理代码替换为如下代码:



public override void WebAdding(SPWebEventProperties properties) {
// check how many other subsites are in the current site this
  //      site is being created within... no more than 2 allowed
  if (properties.Web.Webs.Count >= 2)
  {
     properties.Cancel = true;
     properties.RedirectUrl = "/_layouts/CustomErrorPage/SiteCreationError.aspx";
     properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
   }
}
  每当在当前网站(SPWeb)中新建子网站(SPWeb)时,该事件接收器将被触发,以检查当前网站中的子网站数量。如果已经存在两个子网站,则该事件接收器就会放弃新网站的创建操作,并将用户重定向到一个自定义的名为SiteCreationError.aspx的ASPX页面,您将在后面的步骤中创建该页面。
  首先,考虑一下您创建一个自定义错误页面的理由。通过使用这项技术,您可以为用户提供特定于当前问题的充足上下文信息,并针对如何解决该问题提供指引。现在,您将创建一个用于告知用户无法向当前网站添加两个以上子网站的简单自定义错误页面。
  现在,将创建一个在错误发生时由您的事件处理程序调用并重定向用户的自定义应用程序页面。右击CustomErrorPage项目,并选择添加» SharePoint“Layouts” 映射文件夹


DSC0002.png
  右击Layouts\CustomErrorPage文件夹,选择添加 » 新建项,从SharePoint | 2010分组中选择应用程序页模板,并将该文件命名为SiteCreationError.aspx。
DSC0003.png
  在代码视图中,打开SiteCreationError.aspx,并将Main、PageTitle 和 PageTitleInTitleArea占位符中的内容更新为如下代码:



<asp:Content ID="Main" contentplaceholderid="PlaceHolderMain" runat="server">
<p>
  ERROR: You can only have a maximum of two (2) subsites in the current site.
</p>
</asp:Content>
<asp:Content ID="PageTitle" contentplaceholderid="PlaceHolderPageTitle" runat="server">
  ERROR: Maximum Subsites in Current Site Exceeded
</asp:Content>
<asp:Content ID="PageTitleInTitleArea" contentplaceholderid="PlaceHolderPageTitleInTitleArea" runat="server" >
   ERROR: Maximum Subsites in Current Site Exceeded
</asp:Content>
  保存所有更改,并按[CTRL]+[F5],来生成和部署当前解决方案,以便测试您的工作成果。最后,Visual Studio将在浏览器中打开该网站。尝试通过创建页面http://moss.contoso.com/sites/Lab03/_layouts/create.aspx在当前网站中创建第三个子网站,并确保您的事件处理程序阻止该网站的创建操作。
DSC0004.png
DSC0005.png
DSC0006.png



  • 注意,每当您创建一个子网站时,您都将被自动重定向到该新建网站。这就意味着,您需要在新建其他子网站之前,都要导航回原始网站。
  • 当您创建第三个子网站时,您应该被重定向到您的自定义应用程序页面,其地址为http://moss.contoso.com/_layouts/CustomErrorPage/SiteCreationError.aspx。
  • 如果直接使用网站操作或者查看所有网站内容中的创建,在安装有sliverlight的浏览器中,会启用sliverlight风格的创建页面,这时可以看到阻止创建成功,但是没有跳转。

同理,我们也可以添加一个列表项事件接收器。与上例相比,这种重定向更加接近SharePoint2010的界面风格。相关信息如下。
名称:TaskDueDateReceiver
绑定到任务,处理正在添加项事件。
DSC0007.png
打开TaskDueDateReceiver\TaskDueDateReceiver.cs代码文件。将ItemAdding事件处理代码替换为如下代码:





public override void ItemAdding(SPItemEventProperties properties)
{
     base.ItemAdding(properties);
     if (string.IsNullOrEmpty(properties.AfterProperties["DueDate"].ToString()))
     {
       properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
       properties.RedirectUrl = "/_layouts/CustomErrorPage/DueDateErrorPage.aspx";
     }
}
同样,在Layouts\CustomErrorPage下添加一个应用程序页DueDateErrorPage.aspx。,并将Main、PageTitle 和 PageTitleInTitleArea占位符中的内容更新为如下代码:





<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    任务的截止日期没有填!
</asp:Content>
<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
这是一个自定义的错误信息页面
</asp:Content>
<asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" >
这是一个自定义的错误信息页面
</asp:Content>
保存所有更改,并按[CTRL]+[F5]。在打开的浏览器中,点击任务列表,并新建一个任务项。如果没有填写截至日期,保存时会出现如下提示:
DSC0008.png



在此次练习中,您已经创建了一个用到错误页面事件处理程序选项的新事件。
  相关文件下载03_Lists.zip
  参考资料:
  Sharepoint 2010 Developer Training Kit

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-120375-1-1.html 上篇帖子: 如何将域中的AD数据导入SharePoint 下篇帖子: SharePoint 自定义的MasterPage
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表