Элемент <element> не является известным элементом предупреждения в Visual Studio при использовании пользовательских элементов управления

У меня был проект VS2008, который показывал это предупреждение, и я нигде не мог найти решение.

Элемент не является известным элементом предупреждения в vs2008 при использовании пользовательских элементов управления

Как я могу это исправить?

Ответы

Ответ 1

Это звучит как классическое повторное построение вашего решения и "закрытие и повторное открытие Visual Studio".

Возможно, это также может быть связано с аналогичной проблемой, с которой я ответил в "Разрешение" (Validation): Элемент "xxxx не поддерживается" . предупреждение в Visual Studio 2005/2008.

Ответ 2

Это также может произойти, если элемент, который вы пытаетесь добавить, находится в тегах другого элемента, в котором он не должен находиться.

Пример:

<asp:Button ID="button" runat="server" >
    <asp:Repeater ID="repeater" runat="server"></asp:Repeater>
</asp:Button>

Или в моем случае, поместив <asp:Repeater> в <asp:UpdatePanel> и запустив его в <ContentTemplate>:

<asp:UpdatePanel ID="upPanel" runat="server">
    <ContentTemplate>
        <asp:Repeater ID="rep" runat="server">

        </asp:Repeater>
    </ContentTemplate>
</asp:UpdatePanel>

Ответ 3

По-видимому, это также может произойти, если имя пространства имен в файле .ascx не совпадает с пространством имен в файле ascx.cs(codebehind). Еще один вопрос для проверки.

Ответ 4

Из ОП:

Очевидное решение этого заключается в том, чтобы убедиться, что TagName является имя класса управления.

Таким образом, для моего примера следующее отобразило предупреждение:

<%@ Register Src="~/path/to/Control.ascx" TagName="tagName" TagPrefix="tagprefix" %>

<tagprefix:tagName runat="server" id="controlID" />

Но изменив его на:

<%@ Register Src="~/path/to/Control.ascx" TagName="Control" TagPrefix="tagprefix" %>

<tagprefix:Control runat="server" id="controlID" />

fixes it.

Ответ 5

Проверьте, что вы можете быть на ContentPlaceHolderID = "MainContent" на Asp.net, поэтому поместите код на новый placeholder

Ответ 6

Я обнаружил, что проблема была решена, когда я изменил действие Build с "content" на "compile" для файла .ascx и затем вернул его обратно.

Ответ 7

Это может произойти, если что-то не хватает в вашем web.config тоже. Я просто столкнулся с этой ошибкой при копировании настраиваемого элемента управления из одного решения в другое, и страница все еще не смогла найти элемент. Если ни одно из указанных выше не устраняет проблему, проверьте этот раздел web.config и убедитесь, что ваш элемент управления включен:

<controls>
    <add tagPrefix="fu" namespace="Fubar.Base" assembly="Fubar" />
    ...
</controls>

После добавления этого, а затем закрытия/повторного открытия решения проблема исчезла.