применение и использование атрибутов на страницах asp.net - PullRequest
0 голосов
/ 21 января 2010

Я думаю, что я могу подходить к этому вопросу неправильно, но здесь идет ... Я пытаюсь применить атрибуты (не-html) к веб-элементам управления через дизайнер, например:

    [MHCSecurityAttribute("testpermission", true)]
    protected global::System.Web.UI.WebControls.TextBox test1;

Идея состоит в том, чтобы перебрать коллекцию элементов управления на базовой странице и извлечь эти атрибуты, а затем "заблокировать" элемент управления, либо сделав его доступным только для чтения, либо включив / отключив ...

Вот в чем проблема ... Коллекция элементов управления - это экземпляр im after, но Control.GetType получит тип, связанный, скажем, с TextBox ... в то время как я действительно ищу атрибут, который я установил в Сама страница для этого экземпляра. На самой странице я не как даже ссылаться на тип. На странице, если я смотрю на this.GetType (). GetMembers () ... Я все еще не вижу свой атрибут для моего элемента управления. Есть мысли?

1 Ответ

0 голосов
/ 22 января 2010

ну вот и ответ ....

Сначала вам нужно правильно посмотреть на страницу, вызвав this.GetType (). BaseType. Оказывается, оператор this, который вы используете на страницах aspx, в конечном итоге является производным типом ...

Как только это будет сделано, вы можете найти атрибуты в полях

const BindingFlags bf = BindingFlags.DeclaredOnly | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static;

foreach (Control c в элементах управления) { bool useMHCSecurity = c is IMHCSecurityControl; если (c.ID! = ноль) { FieldInfo info = parentPage.GetField (c.ID, bf); если (информация! = ноль) { object [] attribute = info.GetCustomAttributes (typeof (MHCSecurityAttribute), false);

обратите внимание, вы должны проверить это 1) у вас есть идентификатор атрибута (вы получаете буквальные элементы управления и такие, которые не будут назначены атрибуты) 2) убедитесь, что вы получите и FieldInfo var обратно 3) убедитесь, что вы переместили определения элемента управления из файла конструктора в файл кода (дизайнер перезапишет)

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