35 votes

Microsoft Charting, MVC 3 et Razor

Liées à Ce sujet , je me demande si quelqu'un a fait le Microsoft Cartographie de la bibliothèque de travail avec l'Asp MVC 3 et Rasoir.

Je sais que sur le nouveau tableau helper mis en place, mais étant donné que c'est très limité qui n'est pas vraiment une option.

Pour créer une méthode d'action qui renvoie une image est également assez facile, mais depuis tout à l'interactivité tombe en panne (même de simples info-bulles pour les barres dans un graphique à barres), cette méthode présente plusieurs limites.

Cet exemple est probablement le plus utile de l'article que j'ai trouvé, mais je ne peux pas obtenir un seul tableau de travail même si elle n'travail lors du rendu de l'image que dans une méthode d'action. Aussi, j'ai reçu les échantillons de travail de l'amende en vertu de l' .net 4, mais de toute évidence ces arent MVC échantillons.

SOI - quiconque a Microsoft de cartographie de travail entièrement en Asp net MVC 3 avec Rasoir et pourrait poster un lien vers une solution complète?

14voto

Sarath Points 890

Si vous recherchez une info-bulle que vous recherchez, voici un exemple. J'ai essayé et travaillé comme un charme pour moi. Vous devez associer ImageMap à votre image pour bénéficier d'une interactivité.

Graphiques MVC avec interactivité

12voto

smirne Points 141

J'ai passé quelques jours à la recherche d'une solution qui crée des graphiques interactifs en MVC, mais tous les exemples que j'ai vu étaient plus compliquées qu'elles doivent être.

La réponse de Sarath est presque parfait, mais il enregistre l'image deux fois, ce qui n'est pas très efficace. Avec la fonction Html.RenderAction (), nous pouvons tout faire en une seule passe, et la rendre aussi efficace que possible.

Voici la solution que j'ai trouvé:

http://blog.smirne.com/2012/09/creating-interactive-charts-with-aspnet.html

Je n'ai pas vu de solution qui peut tout faire en une seule passe. La meilleure partie de cela est qu'il ne nécessite pas de modifications sur le web.fichier de configuration. Il également ne pas essayer d'utiliser un ASP.net contrôle de la MVC. C'est de la pure MVC de la technologie.

Mise à JOUR

Voici le code comme demandé:

CONTRÔLEUR:

public ActionResult Chart()
{
    var chart = buildChart();
    StringBuilder result = new StringBuilder();
    result.Append(getChartImage(chart));
    result.Append(chart.GetHtmlImageMap("ImageMap"));
    return Content(result.ToString());
}

Les Fonctions De L'Utilitaire:

private Chart buildChart()
{
    // Build Chart
    var chart = new Chart();

    // Create chart here
    chart.Titles.Add(CreateTitle());
    chart.Legends.Add(CreateLegend());
    chart.ChartAreas.Add(CreateChartArea());
    chart.Series.Add(CreateSeries());

    return chart;
}

private string getChartImage(Chart chart)
{
    using (var stream = new MemoryStream())
    {
       string img = "<img src='data:image/png;base64,{0}' alt='' usemap='#ImageMap'>";
       chart.SaveImage(stream, ChartImageFormat.Png);
       string encoded = Convert.ToBase64String(stream.ToArray());
       return String.Format(img, encoded);
    }
}

VUE:

@{ Html.RenderAction("Chart"); }

1voto

Martin Buberl Points 14573

Ici, serait une solution complète sur CodeProject à l'aide de ASP.NET MVC 2 et Microsoft Contrôles Graphiques:

C'est probablement aussi bon qu'il obtient pour le moment (au moins, je ne pouvais pas trouver quelque chose qui correspond à vos besoins mieux), parce que ASP.NET MVC 3 est toujours juste RTM et est donc le moteur de vue razor. De toute façon, pour migrer à partir de ASP.NET MVC 2 à 3 n'est pas une grosse affaire. La commutation du moteur d'affichage de rasoir serait un peu plus d'effort, mais le concept reste le même.

Je dis "allez-y" et quand on est face à un problème concret ou avez une question, posez-la ici.

Mise à jour

Ce billet de blog de Robert Muehsig couvre le sujet en tant que bien et n'ont qu'une solution téléchargeable. En fonction de votre commentaire, il ressemble plus à ce que vous voulez vraiment accomplir:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X