2012-01-04 15 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

あなたは上の設定ファイルにそれを追加するために欠けています例えば、フライ..?もしそうなら、正確に.configファイルを更新するためにXPATHを使って何かをやったことがあります。あなたの質問を理解していなければ私を修正してください。 – MethodMan

+0

設定ファイルを編集するとWebアプリケーションが再起動します。 –

+1

実行時にweb/app.configを編集するのは悪い習慣です。 –

答えて

0

いいえ、これはできません。 tag要素のマップ先であるTagPrefixInfoクラスは封印されており、この目的のための汎用プロパティは提供されません。

追加のプロパティを追加しようとすると、asp.netが処理を拒否するため、アプリケーションが中断されます。

さらに、これが可能であっても、タグの定義がページ上に配置された実際のコントロールにどのようにマッピングされるかを見るのは非常に難しいでしょう。私はそれを解決しようとしている結び目にひねってasp.netを得るだろうと思う。これは、usingステートメントに属性を追加しようとする場合と同様です。

あなたの質問に基づいて、残りのオプションの大半はあなたには分かります。あなたが言及しなかっただけで約1

は、タグを使用してページ上に配置され、実際のコントロールにプロパティを追加したすなわち

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

私はすでにそれをやっていました。私は、デフォルト値のdefaultVal属性をconfigから取得したかっただけです。 –

+1

申し訳ありませんが、あなたはconfig内の他の場所に追加できます。タグ行には追加できません。マイクロソフトはこれをかなり緊密に固定している。 gigglesについては、私もuserControlパスにクエリ文字列パラメータを追加しようとしましたが、asp.netはユーザコントロールを見つけることができないと訴えています。 –

+0

私はそれを試みました:P。とにかくおかげで、私は病気だけでいくつかのキーを使用すると思います –

1

あなたがコントロール自体、ないweb.configurationファイルでこれを行うだろう。私は、追加属性UI、

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

私は道オフ可能性のようなものがあると信じているが、それはそのようなものです。 他のオプションは、次の二つのオプションは、カスタム構成ノードから値を解析するか、デフォルト値を設定するためにはapp.configを使用するセクションハンドラを作成することです

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

オブジェクトのctorの中で値を設定することです。

+0

私はそれを知っていますが、web.configコントロールのセクションからそのデフォルト値を取得したいと思います。したがって、[DefaultValue(ConfigurationControl.DefaultNumberValue)]のようなものです public int Number {get; set;} –