SORU
26 Kasım 2008, ÇARŞAMBA


Yeni asp.net grafik kontrolleri - MVC ile (sonunda) çalışacaktır?

Scott Gu sadece grafik denetimleri tarafından dağıtımı yapılan yeni bir dizi yayınlanmıştır .NET ekibi. Harika görünüyorlar: http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx

Milyon dolarlık bir soru ... ne zaman olursa MVC ile çalışacak.

CEVAP
26 Kasım 2008, ÇARŞAMBA


İki şekilde grafik denetimleri kullanabilirsiniz:

Üreten bir Kumanda Görüntüsü

Grafik oluşturmak ve bir eylem (Chatuman dir olarak düşünüyorum): görüntü olarak döndürerek

Chart chart = new Chart();
chart.BackColor = Color.Transparent;
chart.Width = Unit.Pixel(250);
chart.Height = Unit.Pixel(100);

Series series1 = new Series("Series1");
series1.ChartArea = "ca1";
series1.ChartType = SeriesChartType.Pie;
series1.Font = new Font("Verdana", 8.25f, FontStyle.Regular);
series1.Points.Add(new DataPoint { 
                AxisLabel = "Value1", YValues = new double[] { value1 } });
series1.Points.Add(new DataPoint {
                AxisLabel = "Value2", YValues = new double[] { value2 } });
chart.Series.Add(series1);

ChartArea ca1 = new ChartArea("ca1");
ca1.BackColor = Color.Transparent;
chart.ChartAreas.Add(ca1);

using (var ms = new MemoryStream())
{
    chart.SaveImage(ms, ChartImageFormat.Png);
    ms.Seek(0, SeekOrigin.Begin);

    return File(ms.ToArray(), "image/png", "mychart.png");
}

WebForms Tarzı

Bu sayede sadece grafiği vardır .görünümler (sadece geleneksel web formları gibi) SEO. Bunun için web sitenizin ilgili bit kanca gerekecek.config

<controls>
    ...
    <add tagPrefix="asp"
         namespace="System.Web.UI.DataVisualization.Charting"
         assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</controls>

<httpHandlers>
    ...
    <add path="ChartImg.axd"
         verb="GET,HEAD"
         validate="false"
         type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</httpHandlers>

<handlers>
    ...
    <add name="ChartImageHandler"
         preCondition="integratedMode" 
         verb="GET,HEAD"
         path="ChartImg.axd"
         type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</handlers>

Grafiği oluştururken DataPoint unsurları içinde kod kaçamazsın, veri kanca Görünüm sınıfında bir yöntem gerekir. Bu benim için iyi çalışır. Çalışma bu şekilde kontrol render resim grafik denetimi http işleyicisi tarafından oluşturulan bir URL sağlar. Dağıtımınızda resimleri önbelleğe bunun için yazılabilir bir klasör vermeniz gerekir.

* VS 2010 / .NET 4 * Destek

Bu çalışma almak için .NET 4 uygun ortak anahtar belirteci sürüm 4.0.0.0 için grafik referansları değiştirmek gerekir.

Ayrıca grafik kontrol isteği şimdi rota yerine geçerli istek için URL yolunu oluşturur. Benim için herşey grafik istekleri /{Controller}/ChartImg.axd ve Benzerleri yolları tarafından bloke edildi çünkü 404 hataları sonuçlandı anlamına geliyordu. Bunu düzeltmek için benim kullanımları kapsayan ekstra İgnoreRoute aramalar ekledim, daha genel bir çözüm daha iyi olurdu:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("ChartImg.axd/{*pathInfo}");
    routes.IgnoreRoute("{controller}/ChartImg.axd/{*pathInfo}");
    routes.IgnoreRoute("{controller}/{action}/ChartImg.axd/{*pathInfo}");
...

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Christopher Bill

    Christopher

    30 NİSAN 2009
  • talkandroid

    talkandroid

    27 Mayıs 2010
  • THE RED DRAGON

    THE RED DRAG

    6 ŞUBAT 2009