Как получить доступ к текущей [веб] странице (за пределами текущей страницы)? - PullRequest
0 голосов
/ 12 октября 2009

Ситуация такая:

У меня есть абстрактный класс, используемый глобально, который ссылался на переменную Session через открытое свойство Теперь мы хотим изменить его поведение, чтобы оно возвращало свойство на главной странице.

(Просто изменяя кишки этого конкретного свойства, мы надеемся избежать переписывания)

Это просто фрагмент класса:

   public abstract class AppSession
   {
        public static CaseNumber CurrentCaseNo
        {
            /* OLD METHOD DELETED */

            get
            {
                if (CurrentPage.Master != null)
                 // property on the master page
                  return CurrentPage.Master.CurrentCaseNo;
                else
                  throw new Exception("This page has no master page");
            }
        }
    }

Выше «CurrentPage» не является действительным / действительным. Я просто написал, что там показывать контекст.

Это вообще возможно?

Спасибо! J

Ответы [ 3 ]

2 голосов
/ 12 октября 2009

Посмотрите на объект HttpContext.Current. Я считаю, что свойство Handler вернет текущую страницу. Было бы легче прочитать значение, хранящееся в сеансе, которое извлекает его из свойства, поскольку сеанс доступен из HttpContext.Current.

1 голос
/ 12 октября 2009

Опираясь на Ответ Дэвида , это может быть использовано статически в вашем приложении:

Page myPage = System.Web.HttpContext.Current.CurrentHandler as Page;

if( myPage != null )
    return ((MyMaster)myPage.Master).CurrentCaseNo;
0 голосов
/ 12 октября 2009

Я думаю, что вам нужно будет работать с чем-то, для чего в качестве параметра используется объект "page", и оттуда вы можете определить, является ли переданная страница вашей главной страницей. И делать то, что вам нужно оттуда ....

Но это добавляет немного накладных расходов.

Настоящий вопрос здесь в том, чего вы пытаетесь избежать? Пытаетесь избавиться от сеанса и перейти к состоянию просмотра?

...