7

Visual Studio 2008で構築されたC#Webアプリケーションがあり、ASP.NETの「構築済み」ブロックのユーザーコントロールに大きく依存しています。

各ページにユーザーコントロールの大きなスタックを登録する代わりに、すべてのコントロールをローカル(特定のフォルダー)のweb.configファイルに登録します。利点は、コントロールを使用でき、ソースビューでページが「よりクリーン」に見えることです。ただし、VS2008デザインビューもIntellisenseも、コントロールがに登録されているという事実を認識していませんweb.config。ただし、アプリケーション自体は期待どおりに機能します。


通常、各ページの上部には次のようなタグがあります。

<%@ Register src="~/CommonControls/Foo.ascx" tagname="Foo" tagprefix="Bar" %>

そして、次のようにローカルweb.configにコントロールを登録します。

<?xml version="1.0"?>
<configuration>
    <system.web>
        <pages>
            <controls>
                <add src="~/CommonControls/Foo.ascx" tagName="Foo" tagPrefix="Bar"/>
            </controls>
        </pages>
    </system.web>
</configuration>

Intellisenseにこれらのカスタムコントロールを認識させるための修正を知っている人はいますか?または、これを行うための「より良い」方法はありますか?

4

4 に答える 4

2

これはローカルの Web.Config ファイルでは機能しませんが、ルートの web.config ファイルで Location タグを使用して同じ結果を得ることができます。

例えば:

<?xml version="1.0"?>
<configuration>
    <location path="MyPath">
        <system.web>
            <pages>
                <controls>
                    <add src="~/CommonControls/Foo.ascx" tagName="Foo" tagPrefix="Bar"/>
                </controls>
            </pages>
        </system.web>
    </location>
</configuration>
于 2009-02-13T12:49:49.213 に答える
1

おそらく、メインの web.config ファイルに登録されていないことが原因です。メインの web.config ファイルに 1 つまたは 2 つの参照を入れてテストします。

于 2009-01-13T22:57:12.317 に答える
1

サンプル コードを試してみたところ、Intellisense は aspx ページのコード ビューとコード ビハインド ページの両方で動作します。ユーザー コントロールのクラス名を確認できます。ビジュアル スタジオでは、デフォルトでクラス名にフォルダー名が含まれています。したがって、コントロールは、予想どおりFooではなくCommonControls_Fooという名前になる場合があります。

いずれにせよ、web.config ファイルはコード ビハインドの Intellisense とは何の関係もありません。クラスの名前と名前空間を確認してください。

于 2009-01-14T16:49:46.910 に答える
0

コントロールを2回登録していて、インテリセンスが参照を解決できないためでしょうか?

コントロールは、構成ファイルまたはページ ディレクティブに登録する必要があると思います。

于 2009-01-14T09:04:48.113 に答える