19 Eylül 2011 Pazartesi

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