Пользовательские элементы управления Visual Studio 2008, зарегистрированные в web.config, не регистрируются в intellisense - PullRequest
7 голосов
/ 13 января 2009

У меня есть веб-приложение на C #, построенное в Visual Studio 2008, где мы в значительной степени полагаемся на пользовательские элементы управления для «предварительно собранных» блоков ASP.NET.

Вместо того, чтобы регистрировать большой стек пользовательских элементов управления на каждой странице, мы регистрируем все элементы управления в локальном (в определенной папке) файле web.config. Преимущество состоит в том, что мы можем использовать элементы управления, и страницы выглядят «чище» в представлении исходного кода. Однако, ни представление VS2008 Design, ни 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 ]

2 голосов
/ 13 февраля 2009

Хотя это не работает в локальном файле Web.Config, вы можете использовать тег Location в корневом файле web.config для достижения того же результата.

Например:

<?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 голос
/ 14 января 2009

Я попробовал ваш пример кода, и Intellisense работает как с представлением кода на странице aspx, так и с кодом позади страницы. Вы можете проверить имена классов ваших пользовательских элементов управления, Visual Studio по умолчанию включает имя папки в имя класса. Таким образом, ваш элемент управления может называться CommonControls_Foo вместо Foo , как и следовало ожидать.

В любом случае файл web.config не имеет ничего общего с Intellisense кода. Проверьте имя и пространство имен класса.

1 голос
/ 14 января 2009

Вероятно, это связано с тем, что он не зарегистрирован в основном файле web.config. Проверьте это, поместив одну или две ссылки в основной файл web.config.

0 голосов
/ 14 января 2009

Может, потому что вы дважды регистрируете элемент управления, а intellisense не может разрешить ссылку?

Я ожидаю, что элемент управления должен быть зарегистрирован либо в файле конфигурации, либо в директиве страницы

...