在web.config中注册的Visual Studio 2008用户控件未使用intellisense注册

时间:2009-01-13 09:05:22

标签: asp.net visual-studio-2008 user-controls intellisense

我有一个在Visual Studio 2008中构建的C#Web应用程序,我们在很大程度上依赖于“pre-built”ASP.NET块的用户控件。

我们不是在每个页面上注册大量用户控件,而是在本地(到特定文件夹)web.config文件中注册所有控件。优点是我们可以使用控件,并且页面在源视图中看起来“更干净”。但是,VS2008设计视图和智能感知都无法识别控件在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 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

这可能与它未在主web.config文件中注册的事实有关。通过在主web.config文件中放置一个或两个引用来测试它。

答案 2 :(得分:1)

我尝试了您的示例代码,Intellisense在aspx页面的代码视图和后面的代码中都有效。您可以检查用户控件的类名,默认情况下,visual studio在类名中包含文件夹名称。所以您的控件可能会被命名为 CommonControls_Foo 而不是 Foo

无论哪种方式,web.config文件都与后面的代码的Intellisense无关。检查类的名称和名称空间。

答案 3 :(得分:0)

可能是因为您正在注册控件两次并且intellisense无法解析引用吗?

我会认为控件应该在配置文件或页面指令

中注册