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);

%>

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top