2012-01-04 4 views
1

Я создал пользовательские элементы управления .NET, и я хотел бы узнать, возможно ли добавить пользовательский атрибут в web.config при добавлении ссылку на элемент управления.добавить пользовательский атрибут web.config в уже существующий элемент

В настоящее время это:

<controls> 
      <add tagPrefix="FOO" src="~/Controls/FooControl.ascx" tagName="Bar" /> 
    </controls> 

Но что я хотел бы сделать, заключается в следующем

<controls> 
      <add tagPrefix="FOO" src="~/Controls/FooControl.ascx" tagName="Bar" defaultVal="12" /> 
    </controls> 

Короче говоря, я хочу, чтобы добавить пользовательский атрибут для .NET по умолчанию ConfigurationElement (controls.add в этом случае) элемент

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

Спасибо за вашу помощь,

+0

ты хотел бы добавить, что в конфигурационном файле на летать например ..? если это так, я сделал что-то подобное, используя XPATH, чтобы обновить файл .config. Поправьте меня, если я не понимаю ваш вопрос .. спасибо – MethodMan

+0

редактирование файла конфигурации перезапустит веб-приложение. –

+1

редактирование web/app.config во время выполнения - полная плохая практика. –

ответ

0

Нет, это невозможно. Класс TagPrefixInfo, который сопоставляет элемент tag, запечатан и не предоставляет никаких общих свойств для этой цели.

Если вы попытаетесь добавить дополнительные свойства, ваше приложение будет ломаться, потому что asp.net откажется его обработать.

Кроме того, даже если это было возможно, было бы очень трудно понять, как определение тега будет сопоставляться с фактическим элементом управления, размещенным на странице. Я думаю, что это приведет к тому, что asp.net все превратится в узлы, пытаясь разрешить это. Это было бы похоже на попытку добавить атрибут в оператор using.

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

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

<FOO:Bar ID="test" runat="server" defaultVal="12"></FOO:Bar> 
+0

Я уже делал это. Мне просто нужен атрибут defaultVal по умолчанию, захваченный из config. –

+1

Извините, вы можете добавить его в другом месте в config, просто не в строке тега.Microsoft сильно заперла его. Для хихиканья я также попытался добавить параметр querystring к пути usercontrol, но затем asp.net жалуется, что он не может найти пользовательский элемент управления. –

+0

Я попробовал это: P. Спасибо в любом случае, я думаю, что плохо просто используйте какой-то ключ –

1

вы могли бы сделать это на самом элементе управления, а не файл web.configuration. Я считаю, что есть UI атрибут добавить, что-то вроде

[DefaultValue(1)] 
public int Number {get;set;} 

я мог быть далеко, но это что-то вроде этого. Другой вариант, чтобы установить значение в CTOR объекта

class MyControl : Control 
{ 
    public MyControl() 
    { 
     Number = 10; 
    } 
} 

следующие два варианта, чтобы создать раздел обработчик для синтаксического анализа значения из узла конфигурации пользовательского или использовать app.config для установки значения по умолчанию.

+0

Я знаю это, но хочу получить это значение по умолчанию из раздела управления web.config. Итак, что-то вроде [DefaultValue (ConfigurationControl.DefaultNumberValue)] public int Number {get; set;} –

Смежные вопросы