MSChart: erreur Vue partielle
-
20-09-2019 - |
Question
J'ai un problème quand je l'aide MSChart sur mon projet MVC, quand j'utilise la première page d'index du projet pour rendre le nom de vue partielle index2 le code est
<% Html.RenderPartial("Index2"); %>
Mais quand je le lance l'erreur est produit que le message est
CS0029: ne peut pas convertir implicitement le type 'ASP.views_home_index2_ascx' à 'System.Web.UI.Page'
-it dit que la ligne de problème de code est
: // Rendu contrôle graphique
Ligne 52: Chart2.Page = this; << A ici
Ligne 53: HtmlTextWriter writer = new HtmlTextWriter (Page.Response.Output);
Ligne 54: Chart2.RenderControl (écrivain);
Mais quand je mets tout code Index2.ascx à la index.aspx et de ne pas rendre la vue partielle, il fonctionne bien
Code de Index2.ascx est
<%
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);
%>
La solution
L'erreur ne semble indiquer qu'il est nécessaire d'être dans une page ASP.NET, probablement parce que les modifications apportées à l'architecture MVC et la façon dont les vues n'utilisent pas vraiment la collection la page / contrôle.
Pour simplifier ce processus, vous pouvez créer une méthode d'aide HTML qui fait l'essentiel de ce travail pour vous d'une manière réutilisable. En outre, vous pouvez essayer d'utiliser un et juste incorporer le contrôle dans la page aussi comme une alternative. Si vous voulez faire la route d'aide, vous pouvez faire:
public static class ChartExtensions
{
public static string Chart(this HtmlHelper html, <settings>)
{
//Put code here, return a string
}
}
HTH.