System.Web.UI.HtmlControls.HtmlGenericControl .Net 4.6.1 中的替换

System.Web.UI.HtmlControls.HtmlGenericControl replacement in .Net 4.6.1

.Net framework 4.6.1 中可用于生成 HTML 内容的 HtmlGenericControl(String) 等价物 class 是什么?

我们正在将 ASP.Net Web 应用程序的 .Net Framework 从 4.0 升级到 4.6.1。我们已将所有 class 中的 System.Web.UI.HtmlControls.HtmlGenericControl 替换为 System.Web.UI.HtmlControls.HtmlElement,但结果显示以下错误消息。

The base class includes the field 'html', but its type (System.Web.UI.HtmlControls.HtmlGenericControl) is not compatible with the type of control (System.Web.UI.HtmlControls.HtmlElement)

修复也有解释 here

我们遇到的问题是应用程序还使用 HtmlGenericControl(String) 构造函数并替换 HtmlElement() class 没有采用字符串参数来指定的构造函数标签。

示例:

var h3Header = new HTMLGenericControl("h3");                        

正在寻找这样的东西:

var h3Header = new HtmlElement("h3");                        

我们最终使用 'HTMLGenericControl()' 并将 web.config targetFramework 更改为 4.0 而不是 4.6.1。

<compilation debug="true" targetFramework="4.0">

这允许我们在使用现有 'HTMLGenericControl()' 代码的同时在 Web 项目中使用 .Net Framework 4.6.1 编译库。

我们在从 3.5 迁移到 4.5 时偶然发现了这个问题。我们的编译标签配置如下:

<compilation debug="false" batch="false" targetFramework="4.5">

我们以另一种方式处理错误消息:

The base class includes the field 'html', but its type (System.Web.UI.HtmlControls.HtmlGenericControl) is not compatible with the type of control (System.Web.UI.HtmlControls.HtmlElement)

您需要替换以下内容中的 id="html"

<html xmlns="http://www.w3.org/1999/xhtml" runat="server" id="html">

变为:

<html xmlns="http://www.w3.org/1999/xhtml" runat="server" id="randomidentifier">

因此基础 class 中的字段 'html' 与 ASP.NET 运行时基于 id 属性生成的控件冲突!