RazorView图表控件

时间:2011-08-08 10:48:47

标签: asp.net-mvc asp.net-mvc-3 razor

我正在从aspx视图转换为razor。在视图中,我有以下代码:

(我正在使用dundas图表)

..
    var chart = new System.Web.UI.DataVisualization.Charting.Chart();
    chart.Width = 492;
    chart.Height = 406;
    chart.RenderType = RenderType.ImageTag;
    chart.ImageLocation = System.Configuration.ConfigurationManager.AppSettings["Temp"] + "/TempImagesChartPic_#SEQ(200,30)";
...
    ...
        // Render chart control
        chart.Page = (Page)this;
        var writer = new HtmlTextWriter(Page.Response.Output);
        chart.RenderControl(writer);

这在aspx中工作得很好,但它抛出“无法将类型'System.Dynamic.DynamicObject'隐式转换为'System.Web.UI.Page'”

如何让它在剃刀视图中工作? 感谢

2 个答案:

答案 0 :(得分:2)

我相信你的问题在于:

chart.Page = (Page)this;

因为在Razor视图中'this'是一个动态对象,它可以包含在html中使用的视图数据。

您可以尝试这样引用,也可以删除Page。从下一行开始直接访问响应:

chart.Page = (Page) PageContext.Page;
var writer = new HtmlTextWriter(Response.Output);
chart.RenderControl(writer);

答案 1 :(得分:1)

您尝试使用的Chart控件是服务器端控件,它严重依赖于ASP.NET WebForms基础结构。您可以在ASP.NET MVC应用程序(WebForms视图引擎)中使用它的事实仅仅是因为此视图引擎在经典WebForms上具有的传统。对于ASP.NET MVC应用程序(包括Razor的所有视图引擎)中的图表,我建议您使用System.Web.Helpers.Chart帮助程序。