将自定义web.config属性添加到预先存在的元素

时间:2012-01-04 18:54:57

标签: c# asp.net vb.net web-config custom-controls

我已经创建了自定义.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(在本例中为controls.add)元素

我知道我可以在创建控件或在appsettings中添加一个键时将其作为属性传递,但如果可能的话,我想远离它。

感谢您的帮助,

2 个答案:

答案 0 :(得分:1)

你会在控件本身上执行此操作,而不是web.configuration文件。我相信你添加了一个UI属性,比如

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

我可能会离开,但它就是这样的。 另一个选项是在对象的ctor中设置值

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

接下来的两个选项是创建一个区段处理程序来解析自定义配置节点中的值,或者使用app.config来设置默认值。

答案 1 :(得分:0)

不,这是不可能的。 TagPrefixInfo类是tag元素映射到的类,它是密封的,并且不为此提供任何通用属性。

如果您尝试添加其他属性,您的应用程序将会中断,因为asp.net将拒绝处理它。

此外,即使这是可能的,也很难看出标签的定义如何映射到页面上的实际控件。我认为这会让asp.net全都扭曲成试图解决这个问题。这与尝试将属性添加到using语句类似。

根据您的问题,您知道其他大多数选项对您开放的是什么。

关于你没有提到的唯一一个是在使用标签放置在页面上的实际控件中添加属性,即

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