2012-01-23 2 views
0

Я пытаюсь установить значение свойства «MasterPageFile» для значения переменной сеанса.Значение значения сеанса MasterPage. C#

вот что я сейчас:

MasterPageFile = Session["selectedLayout"]; 

твердит эту ошибку:

«System.Web.UI.Page.Session» является «собственностью», но используется как «метод '

также попытался

MasterPageFile = Session["selectedLayout"].ToString(); 

, но получаю эту ошибку:

Ссылка на объект не установлена ​​в экземпляр объекта.

+3

Этот код не должен производить эту ошибку. Вы уверены, что это правильный код, вызывающий ошибку? –

+0

Да, я пытаюсь переопределить функцию Page_Preinit внутри файла Default.aspx.cs. Класс _default выводит из класса Page. – shenn

ответ

0

Глупый вопрос здесь, но MasterPageFile создается в любой точке вашей страницы? Я спрашиваю, потому что, если это было первое место, на которое вы ссылались, и начал использовать MasterPageFile, и он вышел из сферы действия, вы получите такой тип ошибки, просто нажмите здесь в темноте.

+0

Да, вот что у меня на вершине моего Default.aspx <% @ Page Language = "C#" MasterPageFile = "~/LayoutOne.master" AutoEventWireup = "true" CodeFile = "Default.aspx.cs" Inherits = «_Default» Title = «Reviews»%> – shenn

+0

Правильно, сделайте это вместо этого. MasterPageFile = «MyTestDesign.master» и посмотрите, работает ли это. Если это действительно изменяет макет страницы в preinit, тогда мы просто решаем проблему кастинга. Вы можете попробовать (String) сеанс [«Независимо»] и посмотреть, делает ли это трюк. Также вы можете попробовать перерыв, указывающий на этот объект, и увидеть, есть ли что-нибудь в нем. Возможно, вам нужно будет проверить, что-то в нем есть, и если не загружать по умолчанию, удачи. –

1

Попробуйте добавить эту проверку:

if (Session["selectedLayout"] != null)...