3

我有一个在 Visual Studio 2005 中创建的旧版 Web 项目,该项目最近已升级到 Visual Studio 2010。它针对 .net 2.0 构建

它包含一个 ascx 用户控件,其中包含一个看起来像

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

原始设计器代码如下所示:

protected global::System.Web.UI.WebControls.ListItem bar;

每当我编辑 .ascx 文件中的任何内容(甚至添加换行符)时,设计器都会自动更新为如下所示:

protected global::System.Web.UI.HtmlControls.HtmlGenericControl bar;

此时,页面停止工作并为我提供以下运行时错误:

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

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

然后我必须手动编辑 ascx.designer.cs 文件以修复 Visual Studio 造成的损坏。

除了将所有遗留选项选择片段重写为 asp listcontrol 对象之外,我能做些什么来阻止 Visual Studio 吃掉我的设计器文件?

4

2 回答 2

1

我有同样的问题。我更改了我的 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).

为了解决这个问题,我修改了这个文件<MyFileName>.aspx.designer.cs,我搜索Option1并替换了

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

protected global::System.Web.UI.WebControls.ListItem Option1;

最后,我建立了我的解决方案,我的问题已经解决了。

于 2016-09-20T19:33:05.287 回答
0

您的 HTML 不正确。

<option>是 的孩子<select>,但您<select>是 的孩子<option>,这是错误的。

它应该是:

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

请注意,该title=""属性对<option>元素没有影响。

于 2012-09-24T18:15:11.177 回答