您的位置:首页 > 移动开发

SP2010开发和VS2010专家"食谱"--第一章节--列表和事件Receiver(5)--添加Application Page到事件Receiver

2014-04-19 11:04 483 查看
        VS提供了简单的方法自定义错误页面。下面我们解释一下如何做到。

1. 管理员打开VS。

2. 打开之前创建的ListItemEventReceiver解决方案。

3. 右击添加新项目Application Page。

4. 命名EventReceiverErrorPage.aspx,添加。这在Layouts下生成一个.aspx页面。这是SharePoint映射文件夹,因此有绿色圆形图标。在此映射文件夹下有和项目同名子文件夹(这里是ListItemEventReceiver)被创建,里面包含了新建的Application Page应用程序页。

5. 打开此页,在此节下添加一个标签

<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
6. 改变标签ID为lblErrMsg,清除Text属性。

<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
</asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<asp:Label ID="lblErrMsg" runat="server" Text=""></asp:Label>
</asp:Content>
<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">Event Receiver Error</asp:Content>
7. 右击页面选择查看代码打开EventReceiverErrorPage.aspx.cs文件。将标签与错误信息联系在一起。

protected void Page_Load(object sender, EventArgs e)
{
string sErrMsg = Request.Params["ErrMsg"];
lblErrMsg.Text = sErrMsg;
}
8. 现在我们需要无论何时遇到错误就使用此页面。打开EventReceiver1.cs文件,在properties.Cancel=true后添加如下代码

properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
properties.RedirectUrl = string.Format("/_layouts/ListItemEventReceiver/EventReceiverErrorPage.aspx?ErrMsg={0}", sErrMsg);
9. 输入错误格式的电话号码。你会看到下面自定义错误信息。



How it works...

        properties对象可以设置为不同状态,其一是CancelWithRedirectUrl。这使得SharePoint查看另一个属性RedirectUrl。这个属性中,你可以设置自己的URL,作为查询参数发送错误信息。

        当添加应用程序页时,你看到Layouts映射文件被创建。映射文件是SharePoint服务器文件系统地址。可以在

"\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE".

中找到。通常此地址为Root,作为根地址。一些SharePoint开发者成为Hive。任何在此映射文件夹中添加的子文件夹都将被创建到场内每个SharePoint服务器中硬盘上。

        无论何时你在SharePoint中创建Web应用程序,这些映射文件夹都被映射到web应用程序中。layouts映射文件夹映射为_layouts,CONTROLTEMPLATES为_controltemplates等等。所以web应用程序中所有网站集和网站都可以通过相对路径访问这些映射文件夹。这也是我们使用/_layouts/链接到我们的应用程序页的原因。

There's more...

        当你需要添加自定义资源时,VS遵从良好的开发模型,在映射文件夹下创建子文件夹。这样你不会使用相同名称覆盖任何OOB SharePoint部件。并且,不要尝试改变Root中的文件,这将影响这个场。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐