我有一个 Visual Studio 2008 项目,在使用用户控件时显示以下警告,但我无法在任何地方找到解决方案。
元素
<element>
不是已知元素
我怎样才能解决这个问题?
我有一个 Visual Studio 2008 项目,在使用用户控件时显示以下警告,但我无法在任何地方找到解决方案。
元素
<element>
不是已知元素
我怎样才能解决这个问题?
这听起来像是一个经典的重新构建您的解决方案和“关闭并重新打开 Visual Studio”的问题。
它也可能与我在解决 Visual Studio 2005/2008 中的 Resolving "Validation (): Element 'xxxx' is not supported" 警告中回答的类似问题有关。
如果您尝试添加的元素位于另一个不应包含的元素的标签内,也会发生这种情况。
例如:
<asp:Button ID="button" runat="server" >
<asp:Repeater ID="repeater" runat="server"></asp:Repeater>
</asp:Button>
或者在我的情况下,将一个<asp:Repeater>
放在 an 中<asp:UpdatePanel>
而忘记将它放在<ContentTemplate>
:
<asp:UpdatePanel ID="upPanel" runat="server">
<ContentTemplate>
<asp:Repeater ID="rep" runat="server">
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
显然,如果 .ascx 文件中的命名空间名称与 ascx.cs(代码隐藏)文件中的命名空间不匹配,也会发生这种情况。还有一个问题要检查。
从OP:
对此的明显解决方案是确保 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" />
修复它。
检查您可能在 Asp.net 上的 ContentPlaceHolderID="MainContent" 上,因此将代码放在新的占位符上
当我将 .ascx 文件的构建操作从“内容”更改为“编译”并随后将其改回时,我发现问题已解决。
如果您的 web.config 中也缺少某些内容,则可能会发生这种情况。我在将自定义控件从一个解决方案复制到另一个解决方案时遇到了这个错误,页面仍然找不到该元素。如果上述方法都不能解决问题,请检查 web.config 的这一部分并确保包含您的控件:
<controls>
<add tagPrefix="fu" namespace="Fubar.Base" assembly="Fubar" />
...
</controls>
添加后,然后关闭/重新打开解决方案,问题就消失了。