Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Turhal Temizer
Turhal Temizer
http://www.turhaltemizer.com
İletişme geçmek için tıklayın.
92 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: Hyper-V Moss SharePoint SharePoint 2010 SQL Server 2008 Temizer. Turhal Temizer Turhal Virtual Machine Windows 7 x64 Genel Turhal Temizer
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : İleri
Kategori : Genel
Yayınlanma Tarihi : 15.8.2010
Okunma Sayısı : 77140
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 21.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 21.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 21.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
SharePoint 2010 – Custom MasterPage ile Yönetilebilir Kod Kullanımı
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
MasterPage kavramı Asp.Net tabanlı geliştirilen orta ve büyük çaplı uygualamaların olmazsa olmazları arasında yer almaktadır. En büyük faydası ise web sayfası içerisinde 5-10 veya daha fazla sayfada kullanılacak olan tasarımın tekrar tekrar sayfaların markup kod kısmına eklenmesi yerine ortak bir şablon üzerinde alarak devam edilmesinin en doğru yol olduğu kavramı ile birleşerek bu sayfalar için taban şablon olarak kullanılmaktadır. Ayrıca tasarım öğeleri dışında arka plan kullanabileceğimiz CSharp ve VB.Net dillerini de kullanarak programatik anlamda da işlemler yapabilinmesi mümkündür. Tabii bu işlemleri uygulama geliştiricilerin tercih etmesinin başlıca sebebi ise bu tekniğin kolay olması ve kullanım rahatlığından kaynaklanmaktadır. Bu tür kolaylıklar yer alırken bu güzel özelliğin SharePoint içerisinde olmamasını beklemek belki de yapılabilecek en büyük yanılgılardan biri olacaktır. Peki aramızda daha önceden SharePoint ile uygulama geliştiren varsa bu işlem SharePoint 2007 de sadece SharePoint Designer (SPD) ile yapabilmekte ve kod ile işlem yapmak istediğimizde bayaa fazla tefarruatlı işlem yapmak gerekirdi. Bu işlemlerde SharePoint development işleminin en zor işlemlerinden biri olarak gösterilirdi. Şimdi geçmiş zamana laf atarak birşeyler yazdığıma göre 2010 sürümünde işlerin çok kolaylaştığını ve hadi hop hemen yapabileceğimi söyleyeceğimi düşünüyorsanız maalesef yanılıyorsunuz. Hala zor bir işlemdir. Ancak dökümante edilmesi ve kolay bulunması amacıyla bu yazımızda arka plan kod yardımı harici masterpage ‘I nasıl portal içerisinde kullanabileceğimizi incelemeye çalışacağız. Aslında makalenin başlığı ingilizce olmalıydı. Çünkü bu tanım yapacak olduğumuz işi daha net açıklamaktadır. SharePoint 2010 – Custom MasterPage Wıth Behind Code daha anlaşılır değil mi?

MasterPage ‘I kod yardımı ile bize özel duruma getirmek için yine bir masterPage ‘e ihtiyacımzı olacaktır. Ayrıca SharePoint ile uygulama geliştiricen yazılımcılar (Yazılımcılar SharePoint Designer ‘I nedense pek sevmezlerde ) SPD uygulamasını sevmeleri gerekmektedir. Çünkü her ne kadar işlemlerimizi Visual Studio 2010 üzerinde yapacak olsakta MasterPage üzerindeki tasarımsal işlemlerimizi design kısmını da görebildiğimiz için SPD üzerinde yapıyor olacağız. Yazıya başlamadan önce üzerinde değişiklik yapacağımız MasterPage ‘I hazırlamamız ya da bulmamız gerekecektir. Ben bu tür geliştirdiğim uygulamalar için SharePoint Server MVP ‘si Randy Drisgill ‘in hazırlamış olduğu Starter MasterPage I kullanıyorum. Burada gereksiz stil öğelerinden temizlenmiş MasterPage tasarımları bulunmaktadır. Üzerine işlem yapmak için oldukça yararlı bir kaynaktır.

Uygulama geliştirmeye başlamadan önce kullanacak olduğumuz MasterPage ‘I Portal sayfasının masterPage ve Page Layout larının yer aldığı Document Library ‘e eklemek gerekmektedir. Bu lokasyonu bulabilmek için Portal sayfasının üzerinde sol kısımda yer alan Sıte Actions seçeneğin Site Settings kısmına tıklıyor sonrasında karşımıza çıkan ekranda ise Galleries kısmında MasterPage olan bölümü seçerek listeyi açıyoruz. Sonrasında kullanacak olduğumuz MasterPage ‘I bu kısma ekliyoruz.



Artık uygulama geliştirmeye hazırız. Vısual Studio 2010 içerisinde Empty SharePoint Project şeması ile projeyi oluşturuyoruz.



Bir sonraki adımda geliştirecek olduğumuz uygulamanın hangi Portal üzerinde ve hangi düzeyde Deploy olacağınız sormaktadır. Biz bu kısımda Farm seçeneğini seçerek devam ediyoruz.



MasterPage ‘I kullanabilmek için projeye Module şemasını eklemek gerekecektir. Bunun için Projenin klasörünün üstüne sağ tıklama yardımı ile Add New Item seçeneğine gidiyoruz.



Açılan ekrandan içerisine MasterPage ‘I de ekleyecek olduğumuz Module şablonunu ekliyoruz.



Bu işlem sonrasında MaterPageModule ‘ün içerisine indirmiş olduğunuz _starter.master dosyasını ekliyoruz. Sonrasında ise Elements.xml dosyasının içeriğini aşağıdaki son haline getiriyoruz.

<?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Module Name="MasterPageModule" Url ="_catalogs/masterpage">
            <File Path="MasterPageModule\_starter.master"
                   Url="MasterPageModule/_starter.master" />
     </Module>
</Elements>

Sırada yapmamız gereken işlem Projeye Feature eklemek olacaktır. Bunun için Features öğesinin üzerine sağ tıklama yaparak Add Features seçeneğine tıklıyoruz. (Otomatik olarak eklenmiş olma ihtimali de bulunmaktadır.)



Sonrasında Features içerisinde yer alan Itemslara göz atıyoruz.



Items yer almadığı için ve bize lazım olan Eventleri kullanmak olduğundan Feature1 ‘ın üzerinde sağ tıklama yardımı ile Add Event Receiver seçeneğini seçerek adımlara devam ediyoruz.



Bu işlem sonrasında Feature1.EventReceiver.cs isimli kod parçası oluştu. Bu kod parçasında yer alan comment ‘li metodlardan FeatureActivate ve FeatureDeactivating commentlerini kaldırıyoruz.

Metodları hazırlamış olduğumuz Feature ‘ın aktifleştiği anlarda ve tekrar kaldırıldığı zamanlarda yapacak olduğu işlemleri kontrol etmek amacıyla kullanıyor olacağız. Aktif duruma geldiğinde bizim hazırlamış olduğumuz harici masterPage pasif duruma geçtiğinde ise masterPage havuzunda yer alan herhangi bir masterPage I kullanıyor olarak ayarlıyoruz. pasif zamanlarda kullanacak olduğu MasterPage ‘I Adventure Works için hazırlanmış olan nightandday.master ‘I kullanıyoruz.

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb currentWeb = (SPWeb)properties.Feature.Parent;

currentWeb.MasterUrl = "/_catalogs/masterpage/_starter.master";
currentWeb.CustomMasterUrl = "/_catalogs/masterpage/_starter.master";
currentWeb.Update();
}

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPWeb currentWeb = (SPWeb)properties.Feature.Parent;

currentWeb.MasterUrl = "/_catalogs/masterpage/nightandday.master";
currentWeb.CustomMasterUrl = "/_catalogs/masterpage/nightandday.master";
currentWeb.Update();
}

Yapmış olduğumuz işlemler sonrasında ilk etapta projeyi deploy edip bir göz atalım bakalım. Biz Feature ‘ı aktifleştirdiğimizde gerçekten seçmiş olduğumuz masterpage varsayılan tasarım oluyor mu?



Kod yardımı ile MasterPage aktifleştirme işlemi başarılı olmuş gibi görünüyor. Şimdi ki adımımız ise masterPage üzerine Web.UI bileşenlerinden ekleyip bunların event v.b. değerlerini kullanmak olacaktır. Bu sebeple projeye Add Reference… yardımı ile System.Web.dll Microsoft.Sharepoint.Publishing.dll ‘ini ekliyoruz.







Referans ekleme işlemlerini tamamladıktan sonra MasterPage üzerinde bir kaç web kontrolü ekliyoruz. Bunun için SPD 2010 üzerinden MasterPage tabına tıklayarak karşımıza gelen MasterPage ‘ler arasından _starter.master I seçip içerisine Label ve Button kontrolü ekliyoruz.



_starter.master ‘a aşağıdaki kod parçalarını ekliyoruz.

<div id="divRibbonContainer" runat="server">
<asp:Label runat="server" Text="Label" id="Label1"></asp:Label>
<br />
<asp:Button runat="server" Text="Button" id="Button1"></asp:Button>
&</div>

MasterPageModule ‘un üzerinde sağ tıklama yaptıktan sonra yeni bir class file ekliyoruz ve içeriğini aşadağıdaki şekilde güncelliyoruz.



using System;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MasterPageWithCodeBehind.MasterPageModule
{
    public class _starter : MasterPage
    {
        protected System.Web.UI.HtmlControls.HtmlGenericControl divRibbonContainer;
        protected Label Label1;
        protected Button button1;

        protected void Page_Load(object sender, EventArgs e)
       {
           divRibbonContainer.Visible = true;
           Label1.Text = "Hello World!";

           button1.Click += new EventHandler(button1_Click);
       }

       void button1_Click(object sender, EventArgs e)
      {
          Label1.Text = "Gidiyorum ben baska sayfaya";
          Response.Redirect("/sitePages/db.aspx");
      }
   }
}

Bu değişikliği de yaptıktan sonra artık uygulamayı derleyip projenin dll ‘ini oluşturabiliriz. Şimdi bu adımları gördükten sonra o kadar zor bir adım yokmuş ki şeklinde aklınızca cümleler uçuşuyor olabilir. Ancak maalesef bu teknik behind code da yapılan işlemlerin çalışması için yeterli değildir. Ilk olarak oluşturulan dll için PublicTokenKey oluşturup sonra bu token yardımı ile dll ‘I masterpage ‘e inherit etmek gerekecektir.

PublicTokenKey almak için dll ‘in bulunduğu yol ve sn.exe –Tp komutunu Vısual Studio Command Prompt üzerinde çalıştırmak gerekecektir.



Publıc Token Key ‘I aldıktan sonra şimdi oluşan dll ‘I MasterPage ‘e inherit etmemiz gerekmektedir. Bu işlem için asp.net alışık olduğumuz inherit işlemini uyguluyor olacağız.

<%@ Master language="C#" Inherits="" %>

Inherits özelliğini değerini ise aşağıdaki şekilde belirliyoruz.

MasterPageWithCodeBehind.MasterPageModule._starter, MasterPageWithCodeBehind, Version=1.0.0.0, Culture=neutral, PublicKeyToken=db08a6e4fe0a07ee

Son olarak MasterPage ‘in inherit kısmı aşağıdaki gibi olacaktır.

<%@ Master language="C#" Inherits="MasterPageWithCodeBehind.MasterPageModule._starter, MasterPageWithCodeBehind, Version=1.0.0.0, Culture=neutral, PublicKeyToken=db08a6e4fe0a07ee" %>

Bu işlem sonrasında artık projeyi deploy edip tekrar sonucu görebiliriz.



Sayfayı görüntülemek istediğimizde bize kullandığımız yöntemin güvenli olmadığı şekilde bir hata verdi. Bunun neden olduğunu kısaca açıklamak gerekirse, web uygulamaları geliştirirken IIS server varsayılan olan Inherits olarak kullanılan dosyaların DLL değil CS ya da VB kod olmasını beklemektedir. Bu iki değer dışında kullanılan bütün kod parçalarını ise sisteme zarar verebilecek tehtit olarak algılar ve çalışmasını engeller. Peki bizim yapmamız gereken nedir? SharePoint portalın web.config dosyasında yer alan SafeControl listesine bizim oluşturmuş olduğumuz dll ‘I eklemek olacaktır.

SharePoint portalin web.config ‘inin olduğu dosyaya erişmek için

C:\inetpub\wwwroot\wss\VirtualDirectories\80 yolunu kullanabilirsiniz. Web.config içerisine ekleyecek olduğumuz kod parçası ise aşağıdaki gibi olacaktır.

<SafeControl Assembly="MasterPageWithCodeBehind, Version=1.0.0.0, Culture=neutral, PublicKeyToken=db08a6e4fe0a07ee" Namespace="MasterPageWithCodeBehind.MasterPageModule" TypeName="_starter" Safe="True" AllowRemoteDesigner="true" />

Değişikliği yapıp tekrar sayfayı çalıştırdığımızda yapmış olduğumuz değişikliklerin sorunsuzca çalıştığını gözlemlemiş oluruz.



Sonuç olarak bu yazımızda SharePoint ‘in ileri sevviye konularından biri olan kod yardımı ile CustomMaster page ‘I düzenleme ve üzerinden işlem yapma konusunu incelemeye çalıştık.

Umarım sizler için yararlı olabilmiştir.

Turhal Temizer

[email protected]
www.turhaltemizer.com
Makale:
SharePoint 2010 – Custom MasterPage ile Yönetilebilir Kod Kullanımı Genel Turhal Temizer
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor