代码之家  ›  专栏  ›  技术社区  ›  user1082202

更新web代码会导致Designer.cs文件将WebControls.ListItem替换为HtmlControls.HtmlGenericControl

  •  3
  • user1082202  · 技术社区  · 12 年前

    我有一个在visualstudio2005创建的遗留网络项目,最近升级到visualstudio2010。它以.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文件,以修复visualstudio造成的损坏。

    我能做些什么来阻止visualstudio吃掉我的设计器文件,而不是将所有遗留选项select片段重写到asp-listcontrol对象中?

    2 回复  |  直到 4 年前
        1
  •  1
  •   Ardalan Shahgholi    8 年前

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

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

        2
  •  0
  •   Dai    12 年前

    您的HTML不正确。

    <option> 是的孩子 <select> ,但你有 <选择> 作为…的孩子 <选项> ,这是错误的。

    它应该是:

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

    请注意 title="" 属性对无效 <选项> 元素。