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

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • Lin Steven

    Lin Steven

    17 EKİM 2006
  • Michael Zhang

    Michael Zhan

    8 EYLÜL 2012