元素“X”不是已知元素 - Web 应用程序

问题描述 投票:0回答:5

我将一个表单网站转换为一个应用程序,到目前为止一切都运行良好。我不断收到绿色波浪线和元素“X”不是已知元素的错误。这几乎适用于每个元素,Gridview、标签、更新面板、超链接字段、绑定字段等......

我的 web.config 包含

<pages theme="basic">
        <controls>
            <add tagPrefix="ajax" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit"/>
            <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </controls>
    </pages>

所以 ajax 和 asp 是可行的前缀。非常奇怪的是,它只发生在少数用户控件上,所有其他用户控件都很好并且错误从未出现。我已经尝试过重新启动,但似乎没有什么可以解决它。所有母版页、网页和大约 90% 的用户控件都很好,它只在少数用户控件上,非常烦人!

asp.net user-controls
5个回答
6
投票

如果 web.config 文件中的

compilation
元素具有
targetFramework="4.0"
属性,我认为不再需要对 System.Web.Extensions 程序集的引用。如果您查看
%WINDIR%\Microsoft.NET\Framework\v4.0.30319\Config
处的根级 web.config 文件,您会注意到以下几行已位于 web.config 文件的
<controls>
部分中:

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls.Expressions" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

System.Web.Extensions 程序集也在

<compilation><assemblies>
部分中引用

<add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

以及以下

<httpHandlers>
也被添加

<add verb="*" path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False" />
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False"/>
<add path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="False" />

另外,以下

<httpModules>
是默认注册的

<add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

简而言之,您的 web.config 文件可能不应该包含对 System.Web.Extensions 程序集的任何引用,因为它已经在根级 web.config 文件中以几乎所有可以想象的方式被引用。

其他参考资料:如何:将 ASP.NET Web 应用程序升级到 ASP.NET 4


2
投票

我认为这是 Visual Studio 中的一个错误。当我遇到这个问题时,我会尝试选择 aspx 页面中的所有内容,剪切,然后将其粘贴回原来的位置。然后应将控件添加到设计器文件中。如果这不起作用,请删除设计器文件并尝试再次将其转换为 Web 应用程序。祝你好运!我也想知道有没有更好的解决办法。


1
投票

我遇到了同样的错误,结果是第一行控件声明中的 CodeBehind 属性存在区分大小写的问题。

以下给出了问题

<%@ Control Language="C#" AutoEventWireup="true" Inherits="ContactListControl" Codebehind="ContactListControl.ascx.cs" %>

主要将其更改为 - 解决问题

<%@ Control Language="C#" AutoEventWireup="true" Inherits="ContactListControl" CodeBehind="ContactListControl.ascx.cs" %>

我建议使用 Visual Studio 自动格式化功能(快捷键 ctrl+k+d),它可以解决此类大写/格式问题。


0
投票

只需尝试卸载然后重新加载项目即可。执行此操作后,检查警告是否仍然存在。


-3
投票

我遇到了完全相同的问题,我尝试了所有方法,直到删除了我的 suo 文件,然后问题就消失了

© www.soinside.com 2019 - 2024. All rights reserved.