2012-01-04 67 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在這種情況下)元素

我知道我可以將它作爲屬性傳遞給創建控件或在appsettings中添加一個鍵,但是如果可能的話,我想遠離它。

感謝您的幫助,

+0

你想將它添加到配置文件上蒼蠅例如..?如果是的話,我已經做了一些完全像這樣的使用XPATH更新.config文件..糾正我,如果我不理解你的問題..謝謝 – MethodMan 2012-01-04 19:00:18

+0

編輯配置文件將重新啓動Web應用程序。 – 2012-01-04 19:01:17

+1

在運行時編輯web/app.config是最糟糕的做法。 – 2012-01-04 19:33:13

回答

0

不,這是不可能的。 TagPrefixInfo類,這是tag元素映射到的內容是密封的,並沒有爲此提供任何通用屬性。

如果您嘗試添加其他屬性,您的應用程序將中斷,因爲asp.net將拒絕處理它。

另外,即使這是可能的,也很難看出標籤的定義如何映射到頁面上的實際控件。我認爲這會讓asp.net全部扭曲成試圖解決這個問題的結。這與嘗試將一個屬性添加到using聲明相似。

根據你的問題,你知道大部分剩下的選項對你來說是什麼。

關於你沒有提到被添加屬性正在使用該標籤放置在頁面上的實際控制的只有一個,即

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

我已經這樣做了。我只是想從config獲取默認值defaultVal屬性。 – 2012-01-04 19:52:14

+1

對不起,你可以在配置的其他地方添加它,而不是在標籤行中。微軟已經將其鎖定得非常緊密。對於咯咯笑,我也嘗試在usercontrol路徑中添加一個querystring參數,但後來asp.net抱怨找不到用戶控件。 – 2012-01-04 19:59:18

+0

我曾試圖:P。無論如何,我想生病只是用一些鑰匙 – 2012-01-04 20:03:19

1

你會做這個控件本身,而不是web.configuration文件。我相信這是一個UI屬性添加,像

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

我可能是遙遠,但它是類似的東西。 另一種選擇是設置值在對象的構造函數

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

接下來的兩個選項是創建一個區段處理器解析從自定義配置節點的值或使用的app.config設置默認值。

+0

我知道,但我想從web.config控件的部分獲取該默認值。所以像[DefaultValue(ConfigurationControl.DefaultNumberValue)] public int Number {get; set;} – 2012-01-04 19:32:14