SharePoint 调查列表的自定义错误页面

场景:

使用SharePoint的调查列表做调查问卷的时候,我们经常要设置成不允许多次答复,这样的话每个人就只能答复一次。

问题:

可是这样会产生一个问题,就是如果一个人第二次答复的话,那么出现的错误提示页面(如下图)不是很友好。

image

尝试的解决方案:

如果熟悉SharePoint 2010的开发的话,那么可定会想到Event Handler这个解决方案。因为在2010中,可是实现使用Event Handler实现自定义错误页面。有了这个方案,那么接下来就是一些细节性的问题了。

1.首先查询当前用户是否在列表中回复过帖子;

2.如果回复过,那么就跳到自定义页面。

代码:

  public override void ItemAdding(SPItemEventProperties properties)
       {
           SPList currentList = properties.List;
           SPQuery query = new SPQuery();
           query.Query = "<Where><Eq><FieldRef Name='Author'/><Value Type='Integer'><UserID Type='Integer'/></Value></Eq></Where>";
           SPListItemCollection items = currentList.GetItems(query);
           if (items.Count == 1)
           {
               properties.Cancel = true;
               properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
               properties.RedirectUrl = "/_Layouts/MyEventError.aspx";
           }          
       }

疑问:

当你代码完成后,并且成功部署,去没有结果。也就是说如果重复答复调查,依然会跳到默认的错误页面。问题出现在哪里?个人猜测是默认错误页面实现机理和Event Handler不一样,通俗一点就是:他们不是一个道上的。怎么办?难道没有办法了。有,但只能说是Workaround, 不是真正的解决方案。

解决方案:

首先把调查列表设置成“允许多次答复”,然后激活你的Event Handler的feature。ok,自定义的错误页面实现了。

为什么说是一种折中的方案呢?因为错误页面发生在用户完成调查的表单,并且提交表单的过程中,而不是发生在用户点击“答复此调查”的过程中。

posted @ 2010-09-18 18:31  范文轩  阅读(1190)  评论(0编辑  收藏  举报