asp.net - 元素 'X' 不是已知元素 - Web 应用程序

标签 asp.net user-controls

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

我的 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% 的用户控件都很好,它只在少数用户控件上,非常烦人!

最佳答案

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

<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"/>

<compilation><assemblies> 中还引用了 System.Web.Extensions 程序集。部分

<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 文件中以几乎所有可以想象的方式被引用。

其他引用文献:How to: Upgrade an ASP.NET Web Application to ASP.NET 4

关于asp.net - 元素 'X' 不是已知元素 - Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550589/

相关文章:

c# - WCF 是这个通用 SOAP 消息的正确方法吗?

c# - 在没有数据库连接的情况下使用 Entity Framework 类

asp.net - Visual Studio 2010 工具箱控件已禁用

HTML/CSS 结构以提供 future 的设计更改和皮肤

wpf - 在等待用户控件初始化时显示忙碌指示符

javascript - 根据具有不同 ID 的多个选中复选框的数量启用/禁用按钮

c# - 链接按钮控件使用asp.net

c# - usercontrol 在父级中找到按钮控件

C# 使用编译器常量排除完整的表单/用户控件

c# - WPF 中的用户控件与控件模板