Veysel Uğur KIZMAZ

Sharepoint 2010 Custom Error Page

27.09.2011Okunma Sayısı: 5140Kategori: Sharepoint 2010

Bu makalemizde Sharepoint’te hata ekranı oluşturma işlemini bir örnekle inceleyeceğiz.

Visual Studio 2010’da yeni bir Sharepoint->2010-> Event Receiver projesi oluşturalım.
 
 
 
Event Receiver’ın çalışma noktasına, Announcements’e yeni bir duyuru eklendiğinde şeklinde ayarlayalım.
 
 
Finish dediğimizde Event receiver eklendi.
EventReceiver’ımızın Code Behind’ını düzenleyelim.
 
  1. public override void ItemAdding(SPItemEventProperties properties)
  2.   {
  3.       base.ItemAdding(properties);
  4.       string expirationDate = properties.AfterProperties["Expires"].ToString();
  5.       if (string.IsNullOrEmpty(expirationDate))
  6.           properties.Cancel = true;
  7.   } 
 
Burada eğer Expiration Date seçeneği boş geliyorsa işlemi iptal etmesini söylüyoruz. Deploy edip çalıştırdığımız zaman işlemin iptal olacağını göreceksiniz.
 
 
Beklediğimiz hata ekranı geldi. Burada bu hata ekranının yerine bir uyarı mesajı gelsin istiyorum.
Bu işlem için projemize sağ tıklayıp Add -> New Item -> Application Page ile yeni bir sayfa ekleyelim (hata olduğunda karşımıza çıkacak hata sayfası)
 
 
Sayfamıza bir label ekleyelim ve yazı rengini kırmızı yapalım.
 
  1. <asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
  2.     <asp:Label ID="lbHataMesaji" runat="server" 
  3. Text="" Font-Bold="true" 
  4. Font-Size="Large" ForeColor="Red"></asp:Label>
  5. </asp:Content>
 

Şimdi sayfamızın code behind’ıne gidelim ve Page_Load event’ına parameter olarak gelen hata mesajını yazdıralım.

 
  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3.     lbHataMesaji.Text = Request.Params["Hata"];
  4. }

Şimdi hata veren noktayı aşağıdaki gibi düzenleyelim.

 
  1. public override void ItemAdding(SPItemEventProperties properties)
  2.     {
  3.         base.ItemAdding(properties);
  4.         string expirationDate = properties.AfterProperties["Expires"].ToString();
  5.         if (string.IsNullOrEmpty(expirationDate))
  6.         {
  7.             string hataMesaji = "Lütfen expiration date'i yazınız";
  8.             properties.Cancel = true;
  9.             properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
  10.             properties.RedirectUrl = "/_layouts/EventReceiverProject1/HataEkrani.aspx?Hata=" 
  11.                 + hataMesaji;
  12.         }
  13.     }

 

 
Deploy edelim ve yeni bir announcement ekleyelim (expiration date olmadan).
 
 
Save butonuna basalım.
 
 
Ve oluşturduğumuz hata ekranı karşımızda.
 
 
 
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com