ASP.Net Dinamik Masterpage Değiştirmek

  • 19.57.2015
  • tayyipyetis
  • ASP.Net

Merhaba, bu makalede asp.net ile bir sayfanın masterpage öğesini dinamik olarak değiştirmeyi anlatacağım. Öncelikle neden böyle birşeye ihtiyaç duyulur bunu açıklığa kavuşturalım. örneğin müşterilerinize satmak için bir e-ticaret sitesi geliştiriyorsunuz ve sitenizin tasarımını opsiyonel hale getirmek istiyorsunuz. bu durumda her tema için farklı masterpage'ler oluşturup bunların css ve js dosyalarını da farklı yerlerden ekleyebilirsiniz. böylelikle farklı masterpage'ler seçildiğinde content yani değişken kısmınızın html iskeleti aynı olmak şartı ile tasarım değişecektir. Aşağıdaki örneği inceleyin

Visual Studio üzerinde projemize iki adet masterpage ve bir adet webform ekleyelim.

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="WebApplication1.Site1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h1>MasterPage 1</h1>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="WebApplication1.Site1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h1>MasterPage 2</h1>
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

Ardından yeni bir form ekleyin

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
</asp:Content>

Code Behind tarafında ise aşağıdaki gibi Page_PreInit fonksiyonuna aşağıdaki kodları yazmalısınız.

protected void Page_PreInit(object sender, EventArgs e)
{
  Page.MasterPageFile = "~/Site2.master";
}

Bu şekilde masterpage sayfasını değiştirebilirsiniz umarım faydalı olmuştur.

Mustafa Tayyip YETİŞ
Yazılım Geliştirme Uzmanı

Yorum Yap

Diğer Makaleler

Etiketler