我正在从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'”
如何让它在剃刀视图中工作? 感谢
答案 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帮助程序。