当我在我的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;
答案 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。