Доступ к текущему экземпляру страницы из статического класса - PullRequest
13 голосов
/ 22 марта 2010

Основной вопрос - возможно ли получить доступ к текущему Page из статического класса в ASP.NET?

Я думаю, нет, так как Google не выдает результатов.

Ответы [ 3 ]

27 голосов
/ 22 марта 2010

Технически вы можете просто получить текущий IHttpHandler для запроса. Поскольку Page реализует это, то вы можете проверить, является ли оно одним.

var page = HttpContext.Current.CurrentHandler as Page;

if(page != null){
    // Do something with page
}
7 голосов
/ 22 марта 2010

Вы можете использовать HttpContext.CurrentHandler, чтобы вернуть текущий HttpHandler для запроса. Класс Page это просто сложный тип HttpHandler.

Чтобы получить доступ ко всему, что связано со свойствами страницы, вам нужно привести результат к типу Page.

Честно говоря, я бы использовал подход Джеффа, если это возможно, потому что, вставляя ссылку на страницу в вызове метода, ваш метод гораздо более тестируем (не говоря уже о надежности, так как вы можете использовать Page напрямую). Если вы полагаетесь на что-либо, связанное с HttpContext, это делает ваш код нестабильным. Возможно, вы находитесь в ситуации, когда вы не можете разработать такой метод, но я бы предпочел это сделать.

3 голосов
/ 22 марта 2010

Самый простой способ - передать текущую страницу в качестве параметра методу, который вы вызываете в статическом классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...