How to Use Custom Error Page in SharePoint 2010 Event Handlers

سلام دوستان

حتماً برای شما هم اتفاق افتاده که بخواهید از طریق Event Handler ها در شیرپوینت نحوه درج، به روزسانی و حذف اطلاعات در لیست ها را کنترل کنید و در نهایت با نمایش پیغامهایی به کاربر وی را از وضعیت اتفاق افتاده مطلع سازید.

در این پُست با یک مثال نحوه سفارشی کردن پیغام های مربوط به Event Handler ها را برای شما توضیح خواهم داد.

فرض کنید یک لیست شیرپوینت ۲۰۱۰ دارید و تصمیم دارید تا با نمایش پیامی، مانع حذف آیتم های لیست توسط کاربران سایت شوید. برای اینکار یک Event Hander در ویژوال استودیو ایجاد خواهید کرد که کد آن به صورت زیر خواهد بود :

۱:  namespace SampleEventReceiver.EventReceiver1   
۲:  {   
۳:      public class EventReceiver1 : SPItemEventReceiver   
۴:      {   
۵:         public override void ItemDeleting(SPItemEventProperties properties)   
۶:         {              
۷:             base.ItemDeleting(properties);   
۸:             properties.Status = SPEventReceiverStatus.CancelWithError;   
۹:             properties.Cancel = true;  
۱۰:         }  
۱۱:      }  
۱۲:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

در کد فوق در خط ۸، شما میتوانید توسط خصوصیت CancelWithError پیام خطای پیش فرض شرپوینت را هنگام حذف آیتم های لیست به کاربر نمایش دهید. (شکل زیر)

image

حال می توانید به جای نمایش خطای فوق که کاربر پسند هم نیست! کاربر را به صفحه ای منتقل و پیغام مناسبتری را به وی نمایش دهید. برای اینکار بر روی پروژه جاری در VS 2010 ، کلیک راست و سپس از منوی باز شده گزینه Add New Item را انتخاب کنید تا پنجره زیر باز شود :

از قسمت نوع پروژه ها، مورد Application Page را انتخاب و در قسمت Name یک نام به عنوان مثال CustomError.aspx برای صفحه مورد نظر وارد کنید.

image

در کد aspx مربوط به صفحه CustomError.aspx در Content با ID=Main هر پیغامی که تمایل دارید به کاربر نمایش داده شود را توسط تگهای HTML و ASP.NET طراحی و وارد کنید. و در نهایت تغییرات صفحه را ذخیره کنید.

من برای طرح این صفحه از یک متن و یک تصویر برای نمایش بهتر پیام به کاربر استفاده کردم. تصویر مورد نظرتان را هم میتوانید در پوشه Layouts از پروژه کپی کنید.بخش Solution Explorer شبیه شکل زیر خواهد شد :

image

حال صفحه مربوط به کد Event را باز و کد زیر را جهت انتقال کاربر به صفحه سفارشی وارد کنید :

۱:  namespace SampleEventReceiver.EventReceiver1   
۲:  {       
۳:      public class EventReceiver1 : SPItemEventReceiver   
۴:      {          
۵:         public override void ItemDeleting(SPItemEventProperties properties)   
۶:         {              
۷:             base.ItemDeleting(properties);   
۸:             properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;   
۹:             properties.RedirectUrl = "/_layouts/SampleEventReceiver/CustomError.aspx";  
۱۰:         }          
۱۱:      }  
۱۲:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

در کد فوق در خط ۸ از خصوصیت CancelWithRedirectUrl استفاده شده است و در خط ۹ هم آدرس صفحه طراحی شده جهت نمایش به کاربر مشخص شده است.

با از اجرای پروژه، پس از حذف آیتم از لیست ، کاربر به صفحه CustomError.aspx منتقل و پیغام خطای سفارشی شما را به صورت زیر مشاهده خواهد کرد :

image

 

شاد و موفق باشید. Smile

پاسخ دهید