Элемент ‹element› не является предупреждением об известном элементе в Visual Studio при использовании пользовательских элементов управления.

У меня есть проект Visual Studio 2008, который показывает следующее предупреждение при использовании пользовательских элементов управления, и я нигде не смог найти решение.

Элемент <element> не является известным элементом

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


person chris    schedule 29.01.2009    source источник


Ответы (7)


Это звучит как классическая перестройка решения и проблема «закрыть и снова открыть Visual Studio».

Возможно, это также может быть связано с аналогичной проблемой, с которой я столкнулся, на которую я ответил на Resolving Validation (): Element 'xxxx' is not supported warning in Visual Studio 2005/2008.

person Jason Snelders    schedule 24.09.2009
comment
Все еще происходит 12 лет спустя в VS 2019 :) И это все еще исправление - перезапуск VS работал - person user2728841; 27.04.2021

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

Например:

<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>
person Jerreck    schedule 22.01.2016

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

person Glade Mellor    schedule 16.09.2010
comment
Inherits = MyControl не был полностью определен в ascx. Это должно было быть Inherits = MyNamespace.MyControl. Это решило проблему для меня. Спасибо. - person Steve Lautenschlager; 20.01.2019

Из ОП:

Очевидное решение этой проблемы - убедиться, что 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" />

исправляет это.

person Community    schedule 30.05.2019

Убедитесь, что вы находитесь на ContentPlaceHolderID = "MainContent" на Asp.net, поэтому поместите код в новый заполнитель.

person user6667793    schedule 02.08.2016

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

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

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

person Kenbo    schedule 17.01.2017
comment
Чтобы добавить к этому ответу, необязательно также регистрировать элемент управления на странице с помощью @Register. - person Paul; 24.11.2018

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

person Manfred Wippel    schedule 06.09.2019