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

[经验分享] [SharePoint 2010]如何定制事件处理程序的Error Pages

[复制链接]

尚未签到

发表于 2015-9-24 09:46:23 | 显示全部楼层 |阅读模式
  我想只要是做过MOSS开发工作的人都应该很熟悉EventHandler了吧,通过EventHandler我们可以在某些事件发生的时或发生后执行我们自定义的代码。大家可能都遇到过这种需求,就是在用户创建新的列表项目时可以对用户所输入的内容进行验证,在SharePoint 2007中我们怎么做呢?开发自定义字段类型?好是好,就是太麻烦了,有没有简单一点的方法呢?事件处理程序?这个好,实现起来也简单,我们可以在ItemAdding事件里获得用户输入的内容,然后根据一定的逻辑去判断用户输入内容的有效性,如果未通过就Cancle掉,这个方法是真好,可就是那个验证未通过后抛出的Error页面实在是太难看了,最终用户很少有能接受的,而且还经常被测试人员当BUG给指出来。。。。。。在SharePoint 2007中实在是没有什么好办法来解决这个问题,不过,幸运的是在SharePoint 2010中这个问题终于被解决了。
  下面我将向大家介绍在SharePoint 2010中如何定制事件处理程序的Error Pages。
  创建一个拥有自定制Error Page的事件处理程序
  首先让我们打开VS 2010并且使用事件接受器模板创建一个新的事件处理程序。
DSC0000.png
  我们可以选择是创建一个场解决方案还是沙盒解决方案
DSC0001.png
  最后选择事件接受器的类型,由于我的这个例子是要验证用户的输入内容,所以在这里我选择创建一个ItemAdding类型的事件接受器。
DSC0002.png
  单击完成,随后我们会看到VS 2010自动为我们创建出了如下的结构的项目
DSC0003.png
  接下来要做的就是为我的事件处理程序添加代码,以处理一些简单的逻辑。打开EventReceiver1.cs,VS已经为我们建立好了大部分的内容,我只需添加一些核心的逻辑就可以了。
  


using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace ItemAddingWithCustomErrorPage.EventReceiver1
{
/// <summary>
/// 列表项事件
/// </summary>
public class EventReceiver1 : SPItemEventReceiver
{
/// <summary>
/// 正在添加项.
/// </summary>
public override void ItemAdding(SPItemEventProperties properties)
{
base.ItemAdding(properties);
if (properties.AfterProperties["到期日期"]==null)
{
properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
properties.RedirectUrl = "/_layouts/ItemAddingWithCustomErrorPage/CustomErrorPage.aspx";
}
}
}
}


  下面要做的就是添加一个用于显示错误信息的应用程序页。首先添加一个新项,仍然是在SharePoint 2010模板中,选择应用程序页模板。
DSC0004.png
  Visual Studio 2010会自动创建一个名为Layouts的映射文件夹,它会映射到SharePoint安装目录中的Layouts目录。
DSC0005.png
  下面要做的就是编辑这个应用程序页面,我们可以自由的定制它的样式,以及其中要显示的信息。



<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CustomErrorPage.aspx.cs" Inherits="ItemAddingWithCustomErrorPage.Layouts.ItemAddingWithCustomErrorPage.CustomErrorPage" DynamicMasterPageFile="~masterurl/default.master" %>
<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
</asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<div>
<asp:Image ID="Image1" runat="server" ImageUrl="/_layouts/ItemAddingWithCustomErrorPage/saw.png"/>
</div>
<div>
[SharePoint 2010]如何定制事件处理程序的Error Pages,希望能有更多的朋友能够加入到SharePoint这个大家园中来。
</div>
</asp:Content>
<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
这是一个自定义的错误信息页面
</asp:Content>
<asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" >
这是一个自定义的错误信息页面
</asp:Content>

  OK,到这里代码就全部写完了,让我们来测试一下吧,直接按"F5"就可以了,VS 2010会自动帮我们部署到SharePoint网站中。
  让我来新建一条通知。
DSC0006.png
  为了测试我们定制的Error页面,我故意不输入到期日期,这样当触发ItemAdding事件时将判断到期日期字段的值为空,从而Cancle掉这个ItemAdding事件,并跳转到我们所定制的Error Page。
DSC0007.png
  OY,成功了。显然我这个错误信息页面比较简陋,大家在项目中可以将这个Error Page做的尽可能好一些,从而使用户可以很容易的知道自己究竟在哪里出了错。
  

运维网声明 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-118057-1-1.html 上篇帖子: 在SharePoint 2010中使用表单认证 下篇帖子: Sharepoint学习笔记—Ribbon系列-- 8.在Site上创建(或隐藏)Ribbon Tabs
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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