[SharePoint 2010]如何定制事件处理程序的Error Pages
2010-12-13 01:36
369 查看
我想只要是做过MOSS开发工作的人都应该很熟悉EventHandler了吧,通过EventHandler我们可以在某些事件发生的时或发生后执行我们自定义的代码。大家可能都遇到过这种需求,就是在用户创建新的列表项目时可以对用户所输入的内容进行验证,在SharePoint 2007中我们怎么做呢?开发自定义字段类型?好是好,就是太麻烦了,有没有简单一点的方法呢?事件处理程序?这个好,实现起来也简单,我们可以在ItemAdding事件里获得用户输入的内容,然后根据一定的逻辑去判断用户输入内容的有效性,如果未通过就Cancle掉,这个方法是真好,可就是那个验证未通过后抛出的Error页面实在是太难看了,最终用户很少有能接受的,而且还经常被测试人员当BUG给指出来。。。。。。在SharePoint 2007中实在是没有什么好办法来解决这个问题,不过,幸运的是在SharePoint 2010中这个问题终于被解决了。
下面我将向大家介绍在SharePoint 2010中如何定制事件处理程序的Error Pages。
创建一个拥有自定制Error Page的事件处理程序
首先让我们打开VS 2010并且使用事件接受器模板创建一个新的事件处理程序。
我们可以选择是创建一个场解决方案还是沙盒解决方案
最后选择事件接受器的类型,由于我的这个例子是要验证用户的输入内容,所以在这里我选择创建一个ItemAdding类型的事件接受器。
单击完成,随后我们会看到VS 2010自动为我们创建出了如下的结构的项目
接下来要做的就是为我的事件处理程序添加代码,以处理一些简单的逻辑。打开EventReceiver1.cs,VS已经为我们建立好了大部分的内容,我只需添加一些核心的逻辑就可以了。
OK,到这里代码就全部写完了,让我们来测试一下吧,直接按"F5"就可以了,VS 2010会自动帮我们部署到SharePoint网站中。
让我来新建一条通知。
为了测试我们定制的Error页面,我故意不输入到期日期,这样当触发ItemAdding事件时将判断到期日期字段的值为空,从而Cancle掉这个ItemAdding事件,并跳转到我们所定制的Error Page。
OY,成功了。显然我这个错误信息页面比较简陋,大家在项目中可以将这个Error Page做的尽可能好一些,从而使用户可以很容易的知道自己究竟在哪里出了错。
下面我将向大家介绍在SharePoint 2010中如何定制事件处理程序的Error Pages。
创建一个拥有自定制Error Page的事件处理程序
首先让我们打开VS 2010并且使用事件接受器模板创建一个新的事件处理程序。
我们可以选择是创建一个场解决方案还是沙盒解决方案
最后选择事件接受器的类型,由于我的这个例子是要验证用户的输入内容,所以在这里我选择创建一个ItemAdding类型的事件接受器。
单击完成,随后我们会看到VS 2010自动为我们创建出了如下的结构的项目
接下来要做的就是为我的事件处理程序添加代码,以处理一些简单的逻辑。打开EventReceiver1.cs,VS已经为我们建立好了大部分的内容,我只需添加一些核心的逻辑就可以了。
下面要做的就是添加一个用于显示错误信息的应用程序页。首先添加一个新项,仍然是在SharePoint 2010模板中,选择应用程序页模板。 Visual Studio 2010会自动创建一个名为Layouts的映射文件夹,它会映射到SharePoint安装目录中的Layouts目录。 下面要做的就是编辑这个应用程序页面,我们可以自由的定制它的样式,以及其中要显示的信息。 <%@ 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 style="width:225px;float:left;"> <asp:Image ID="Image1" runat="server" ImageUrl="/_layouts/ItemAddingWithCustomErrorPage/saw.png"/> </div> <div style="width:400px;"> [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网站中。
让我来新建一条通知。
为了测试我们定制的Error页面,我故意不输入到期日期,这样当触发ItemAdding事件时将判断到期日期字段的值为空,从而Cancle掉这个ItemAdding事件,并跳转到我们所定制的Error Page。
OY,成功了。显然我这个错误信息页面比较简陋,大家在项目中可以将这个Error Page做的尽可能好一些,从而使用户可以很容易的知道自己究竟在哪里出了错。
相关文章推荐
- 教你如何调试sharepoint 文档库事件处理程序,呵呵
- 如何:将多个事件连接到 ASP.NET 网页中的单个事件处理程序
- 对sharepoint 的form library的事件进行处理(二)开发事件处理程序
- 如何取得某个菜单所绑定的所有事件处理程序
- head first C#学习笔记:如何创建事件以及事件处理程序
- SharePoint 2010 UI 定制化系列之定制Ribbon UI操作: 如何使用SharePoint Designer 2010定制Ribbon UI操作
- 如何取得某个菜单所绑定的所有事件处理程序
- SharePoint 2013 新功能探索 之 SPGroup、SPUser 事件处理程序 还要继续改进
- 如何判断某个事件已经绑定了某个事件处理程序?
- DHTML_____如何编写事件处理程序
- 如何判断某个事件已经绑定了某个事件处理程序?
- 如何使用Visual Studio Tools for Office创建事件处理程序
- Sharepoint 2010:如何定制Master page精华帖整合
- 删除事件处理程序如何解决
- Sharepoint列表事件处理程序有小问题。
- 如何安全删除基于对话框的MFC中控件的事件处理程序
- 如何写一个跨浏览器的事件处理程序 js
- 如何:在 ASP.NET 网页中对事件处理程序进行运行时动态绑定
- 【转载】CentsOS系统inotify实时监控服务器文件(夹)定制事件处理程序
- 如何判断某个事件已经绑定了某个事件处理程序?