0

MVCプロジェクトでMschartを使用しているときに問題が発生しました。プロジェクトの最初のインデックスページを使用して、部分ビュー名index2をレンダリングすると、コードは次のようになります。

<% Html.RenderPartial("Index2"); %>

しかし、私がそれを実行すると、メッセージが次のようなエラーが発生します

CS0029:タイプ「ASP.views_home_index2_ascx」を「System.Web.UI.Page」に暗黙的に変換することはできません

-コードの問題行は

://チャートコントロールをレンダリング

52行目:Chart2.Page = this; <<ここで

53行目:HtmlTextWriter writer = new HtmlTextWriter(Page.Response.Output);

54行目:Chart2.RenderControl(writer);

しかし、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);

%>

4

1 に答える 1

0

このエラーは、ASP.NETページ内にある必要があることを示唆しているようです。これは、MVCアーキテクチャの変更と、ビューが実際にページ/コントロールコレクションを使用していないためと考えられます。

このプロセスを簡素化するために、そのほとんどの作業を再利用可能な方法で実行するHTMLヘルパーメソッドを作成できます。また、代わりに、を使用して、ページ内にコントロールを埋め込むこともできます。ヘルパールートを実行する場合は、次の操作を実行できます。

public static class ChartExtensions
{
   public static string Chart(this HtmlHelper html, <settings>)
   {
     //Put code here, return a string
   }
}

HTH。

于 2010-03-16T12:30:21.727 に答える