Как определить класс страницы ASPX? - PullRequest
1 голос
/ 16 июня 2009

Если не считать синтаксического анализа страницы ASPX, как определить класс страницы ASPX?

В наших проектах мы используем веб-проекты в VS2008 (вместо вида веб-сайтов или проектов), что дает нам одну DLL для всего сайта, что замечательно.

Теперь мне нужно программно определить класс сайта ASPX.

Я ЗНАЮ , что класс ASPX имеет то же имя файла aspx (при создании с помощью VS), однако имя файла может быть переименовано в рабочей среде и, следовательно, передать такой код smitherins.

Все наши страницы ASPX начинаются с базовой директивы @Page:

<%@ Page ... Inherits="_CLASS_NAME_GOES_HERE_" %>

Итак, если не считать синтаксического анализа самой директивы, какие еще есть варианты?

Отредактировано, чтобы добавить:

Поскольку мы используем стороннее программное обеспечение для управления нашим порталом, это требует определенных условий.

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

Отредактировано для уточнения

Я вижу, что вопрос может быть не таким ясным, как я думал, тогда позвольте мне немного уточнить:

Допустим, у нас есть относительный URL-адрес указанной страницы, например "~/destination.aspx"

Мне нужно определить класс этой страницы на основе ее URL.

Ответы [ 3 ]

2 голосов
/ 16 июня 2009

Вы можете попробовать это. GetType () на странице кода позади

1 голос
/ 22 июля 2009

Следующий код выполняет то, что, я думаю, вы ищете, но в нем используется метод, явно помеченный как «не предназначенный для использования непосредственно из вашего кода»:

string path = "~/MyPage.Aspx";
IHttpHandler handler = System.Web.UI.PageParser.GetCompiledPageInstance(path, Server.MapPath(path), HttpContext.Current);
Response.Write(handler.GetType().BaseType.FullName);

Это выводит:

MyApp.MyPage

Вам необходимо использовать GetType (). BaseType, потому что ASP.NET динамически создает новый класс для каждой страницы .ASPX, который наследует класс codebehind.

0 голосов
/ 16 июня 2009

Если вы владеете всеми «безопасными» страницами, возможно, вы могли бы получить их все из того же базового класса, в котором была нужная вам информация. Тогда вы можете просто привести тип к базе. Если это не удается, то вы знаете, что это не может быть безопасно.

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