设计师坚持使用'System.Web.UI.WebControls',这是不存在的

时间:2012-05-07 00:32:48

标签: asp.net visual-studio-2010 charts

我遇到了一个奇怪的问题:我试图将ASP.NET 4.0网站迁移到ASP.NET Web应用程序。 Visual Studio"转换为Web应用程序"函数实际上工作得很好,但唯一不起作用的是对图表的引用。我收到了错误:

  

类型或命名空间名称' Chart'在命名空间中不存在   ' System.Web.UI.WebControls'

来自.designer文件。设计者自动创建这种类型的代码:

protected global::System.Web.UI.WebControls.Chart ClientHoursPie;

根据我所做的研究,用于图表的正确4.0命名空间是System.Web.UI.DataVisualization.Charting。我在web.config中添加了以下组件(从原始网站复制,工作正常):

<httpHandlers>
    <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<compilation debug="true" targetFramework="4.0">
    <assemblies>
        <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </assemblies>
</compilation>

我可以更正设计器文件中的命名空间,但每次保存aspx文件时,设计器都会恢复到旧的命名空间。

我希望避免从头开始重建所有单个页面。我错过了什么地方?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我能够通过在web.config中添加一些我错过的条目来解决问题。遇到此问题的任何人都需要确保包括:

<pages>
    <controls>
        <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </controls>
</pages>

这个(在system.webServer部分中):

<handlers>
    <remove name="ChartImageHandler"/>
    <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</handlers>