MsChart:部分视图错误

时间:2010-03-16 09:43:54

标签: asp.net asp.net-mvc mschart

当我在我的MVC项目中使用Mschart时遇到问题,当我使用项目的第一个索引页面来呈现部分视图名称index2时,代码是

<% Html.RenderPartial("Index2"); %>

但是当我运行它时会发生错误,消息是

CS0029:无法将类型'ASP.views_home_index2_ascx'隐式转换为'System.Web.UI.Page'

-it表示代码问题行是

://渲染图表控件

第52行:Chart2.Page = this; &LT;&LT;在这里

第53行:HtmlTextWriter writer = new                                                 的HtmlTextWriter(Page.Response.Output);

第54行:Chart2.RenderControl(作家);

但是当我把Index2.ascx中的所有代码都放到index.aspx而不是渲染局部视图时它工作正常

Index2.ascx的代码是

 <%   
            System.Web.UI.DataVisualization.Charting.Chart Chart2 = new System.Web.UI.DataVisualization.Charting.Chart();
            Chart2.Width = 412;
            Chart2.Height = 296;
            Chart2.RenderType = RenderType.ImageTag;

            Chart2.Palette = ChartColorPalette.BrightPastel;
            Title t = new Title("No Code Behind Page", Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105));
            Chart2.Titles.Add(t);
            Chart2.ChartAreas.Add("Series 1");

            Chart2.Series.Add("Series 1");

            // add points to series 1
            Chart2.Series["Series 1"].Points.AddY(3);
            Chart2.Series["Series 1"].Points.AddY(4);
            Chart2.Series["Series 1"].Points.AddY(5);

            Chart2.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;
            Chart2.BorderColor = System.Drawing.Color.FromArgb(26, 59, 105);
            Chart2.BorderlineDashStyle = ChartDashStyle.Solid;
            Chart2.BorderWidth = 2;

            Chart2.Legends.Add("Legend1");

            // Render chart control
            Chart2.Page = this;
            HtmlTextWriter writer = new HtmlTextWriter(Page.Response.Output);
            Chart2.RenderControl(writer);

%GT;

1 个答案:

答案 0 :(得分:0)

错误似乎表明它必须位于ASP.NET页面中,可能是因为MVC架构的更改以及视图如何不真正使用页面/控件集合。

为了简化此过程,您可以创建一个HTML帮助程序方法,该方法可以以可重用的方式完成大部分工作。此外,您可以尝试使用a,只是将控件嵌入页面中作为替代方案。如果你想做辅助路线,你可以这样做:

public static class ChartExtensions
{
   public static string Chart(this HtmlHelper html, <settings>)
   {
     //Put code here, return a string
   }
}

HTH。