Softronic har genom mångårig erfarenhet av nedanstående branscher utvecklat en rad erbjudanden som är specifika för just dessa.
Det är inte ovanligt att en webbredaktör vill att två i sidor med i stort sett likadant innehåll ska ha olika utseende, tex olika menyer eller olika puffar, i olika delar av sidträdet. Till exempel kanske en artikelsida ska visa puffar med länkar till olika avdelningar om sidan finns direkt under startsidan men inte om den ligger under en avdelningssida.
Det enklaste sättet att lösa det är att skapa två sidtyper, en som visar puffarna och en som inte gör det. Nackdelarna är då att redaktörerna måste hålla reda på fler sidtyper och att sidan måste skapas på nytt med en annan sidtyp om den flyttas och plötsligt ska visa puffarna.
En utvecklare brukar då lägga till en sidegenskap där redaktören kan välja om puffarna ska visas eller inte. Det ställer krav på redaktören att göra rätt när sidan skapas och fungerar heller inte särskilt bra om sidan ska ha en helt annan struktur i utseendet även om texterna ska vara lika.
Det enklaste sättet att lösa det problemet är att skapa två sidtyper vars sidmallar använder olika master-sidor med olika utseende och struktur. Nackdelarna är då att redaktörerna måste hålla reda på fler sidtyper och att sidan måste skapas på nytt med en annan sidtyp om den flyttas och plötsligt ska ha ett annat utseende.
Ett sätt att lösa problemet är att låta sidmallen byta master-sida. Det går att byta master-sida programmatiskt när sidan laddas. Det krävs ingen rymdforskning för att åstadkomma det men lösningen är heller inte helt självklar.
Den master-sida webbsidan använder pekas i på aspx-filen.
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Templates/Masterpages/Default.Master" CodeBehind="StandardPage.aspx.cs" Inherits="Templates.Pages.StandardPage" %>
I code-behind kan master-sidan sättas programmatiskt.
namespace Templates.Pages { public partial class StandardPage : TemplatePage { protected void Page_PreInit(object sender, EventArgs e) { this.MasterPageFile = "~/Templates/Masterpages/NewPage.Master"; } } }
Tänk på att AutoEventWireup måste vara satt till ”true” för att Page_PreInit ska köras.
<%@ Page Language="C#" AutoEventWireup="true" ...
Nu kan master-sidan bytas genom att sidan kontrollerar om den ligger direkt under startsidan eller längre ner i strukturen. Givetvis kan master-sidan också bytas ut beroende på om en speciell egenskap är satt eller beroende på sidnamn eller vad nu utvecklaren vill ska styra utseendet.
namespace Templates.Pages { public partial class StandardPage : TemplatePage { protected void Page_PreInit(object sender, EventArgs e) { if (CurrentPage.ParentLink.ID != EPiServer.Configuration.Settings.Instance.PageStartId) this.MasterPageFile = "~/Templates/Masterpages/NewPage.Master"; } } }