Aspx sayfamızın PreInit metodunda dinamik olarak masterpage değiştirdiğimiz zaman, bir sonraki postback’te viewstate değerlerinin okunamaması problemi ile karşılaşıyoruz.
Bu durumdan kurtulmak için aşağıdaki gibi kod yazmalıyız.
void Page_PreInit(Object sender, EventArgs e)
{
if (!IsPostBack)
{
object mode = null;
if (StartupModeInSession != null)
mode = StartupModeInSession;
else
mode = StartupMode;
switch ((GeciciKabulFormuPageStartupMode)mode)
{
case GeciciKabulFormuPageStartupMode.FaturalamadanGKFDuzenle:
case GeciciKabulFormuPageStartupMode.CokluFaturalamadanGKFDuzenle:
this.MasterPageFile = "../../08.Faturalama.Web/FaturalamaMasterPage.master";
break;
case GeciciKabulFormuPageStartupMode.PazarlamadanGKFDuzenle:
this.MasterPageFile = "../../04.07.ManifestoKontrol.Web/ManifestoKontrolMasterPage.master";
break;
}
Session[String.Concat(DefaultMasterPageSessionVariableName, this.PageId)] = this.Master.AppRelativeVirtualPath;
base.OnPreInit(e);
}
else
{
if (Session[String.Concat(DefaultMasterPageSessionVariableName, this.PageId)] != null)
this.MasterPageFile = Session[String.Concat(DefaultMasterPageSessionVariableName, this.ClientID)].ToString();
}
}
Hiç yorum yok:
Yorum Gönder