добавить пользовательский атрибут web.config к уже существующему элементу - PullRequest
1 голос
/ 04 января 2012

Я создал пользовательские элементы управления .NET, и я хотел бы знать, если это возможно, как добавить пользовательский атрибут в 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 (элементы управленияв этом случае.) element

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

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

Ответы [ 2 ]

1 голос
/ 04 января 2012

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

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

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

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

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

0 голосов
/ 04 января 2012

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

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

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

Исходя из вашего вопроса, вы знаете, какие из остальных опций открыты для вас.

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

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