Asp.net 更新web代码会导致Designer.cs文件将WebControl.ListItem替换为HtmlControl.HtmlGenericControl

Asp.net 更新web代码会导致Designer.cs文件将WebControl.ListItem替换为HtmlControl.HtmlGenericControl,asp.net,visual-studio-2010,designer,Asp.net,Visual Studio 2010,Designer,我有一个在VisualStudio2005中创建的遗留web项目,最近已升级到VisualStudio2010。它基于.NET2.0构建 它包含一个ascx用户控件,该控件包含一个如下所示的片段 <select runat="server" id="foo"> <option runat="server" id="bar" value="1">1</optio

我有一个在VisualStudio2005中创建的遗留web项目,最近已升级到VisualStudio2010。它基于.NET2.0构建

它包含一个ascx用户控件,该控件包含一个如下所示的片段

<select runat="server" id="foo">
    <option runat="server" id="bar" value="1">1</option>
</select>
每当我编辑.ascx文件中的任何内容时(甚至添加换行符),设计器都会自动更新,如下所示:

protected global::System.Web.UI.WebControls.ListItem bar;
protected global::System.Web.UI.HtmlControls.HtmlGenericControl bar;
此时,页面停止工作,并向我提供以下运行时错误:

描述:解析服务此请求所需的资源时出错。请查看以下特定的解析错误详细信息,并适当修改源文件

分析器错误消息:基类包含字段“bar”,但其类型(System.Web.UI.HtmlControl.HtmlGenericControl)与控件类型(System.Web.UI.WebControl.ListItem)不兼容

然后,我必须手动编辑ascx.designer.cs文件,以修复visual studio造成的损坏


除了将所有旧选项select片段重写到asp listcontrol对象中之外,如何阻止visual studio吃掉我的设计器文件?

您的HTML不正确

的孩子,但你把
作为
的孩子,这是错误的

应该是:

<select runat="server" id="foo">
    <option runat="server" id="bar" value="1">1</option>
</select>

1.

请注意,
title=”“
属性对
元素没有影响。

我也有同样的问题。我更改了ASP.net项目的某些部分,之后出现了以下问题:

The base class includes the field 'Option1', 
but its type (System.Web.UI.HtmlControls.HtmlGenericControl) is not compatible 
with the type of control (System.Web.UI.WebControls.ListItem).
为了解决这个问题,我修改了这个文件
.aspx.designer.cs
,搜索了
选项1
,并替换了

protected global::System.Web.UI.HtmlControls.HtmlGenericControl.ListItem Option1;


最后,我构建了我的解决方案,我的问题消失了。

对不起,我在原始问题中的解释不正确。html实际上是按照您指定的嵌套顺序。我用正确的html代码更新了问题。是的,在您再次更改ascx之前,问题又出现了。在我的情况下,我已经得到了修复,并且从来没有遇到过相同的问题。标记为已解决。如果我没记错的话,这是暂时解决问题的方法,但每次编辑都会出现问题。我们最终在angular中重写了应用程序,所以这不是问题。
protected global::System.Web.UI.WebControls.ListItem Option1;