0

J'essaie d'obtenir un contrôle System.Web.UI.Datavisualization.Chart à rendre sur ma page en utilisant ASP MVC 4.0 (.NET 4.5 sur VS 2012 RC). Je me rends compte qu'il n'est pas facile/standard d'utiliser directement les contrôles webforms sur les vues de pages MVC, donc j'essaie d'utiliser une action dans le contrôleur pour retourner une image du graphique que la vue peut afficher.Contrôle du graphique ASP MVC 4.0 correctement l'image de rendu

Dans le HomeController j'ai:

public FileResult DataChart() 
{ 
     Chart newChart = new Chart() 
     { 
      Width = 500, 
      Height = 300 
     }; 
     List<double> DataPoints = new List<double>(); 
     new LogModelContainer().Measurements.Select(i => i.MU).ToList().ForEach(i => DataPoints.Add(i)); 
     Series newSeries = new Series() 
     { 
      ChartType = SeriesChartType.Bar 
     }; 
     newSeries.Points.Add(DataPoints.ToArray()); 
     newChart.Series.Add(newSeries); 
     newChart.ChartAreas.Add(new ChartArea()); 
     var returnVal = new MemoryStream(); 
     newChart.SaveImage(returnVal); 
     return File(returnVal.GetBuffer(), @"image/png"); 
} 

Note: les données du graphique provient d'un EF 5 modèle lié à une base de données SQL (les données n'existent réellement et charger correctement).

Je suis en train de l'utiliser de la Index.cshtml comme suit:

  <img src="/HomeController/DataChart" alt="" /> 

Cela me semble équivalent à ce qui est utilisé dans l'exemple sur CodePlex (MVC Chart Control Example CodePlex j'ai trouvé sur le web autre que celui Je n'ai pas besoin qu'un paramètre soit passé à mon action

Tout ce que j'obtiens quand je cours le code est l'icône d'image cassée sur la page où ce diagramme devrait être. Je suis un noOBie complet d'ASP (ceci est mon premier projet utilisant la technologie) il est donc tout à fait possible que je fasse quelque chose de stupide Quelqu'un peut-il me dire ce qui ne va pas Merci

Répondre

1

L'img src ne serait-il pas/Accueil et non/HomeController? (Je ne sais pas si elles sont équivalentes mais j'ai toujours utilisé juste le nom du contrôleur sans ajouter le mot 'controller'). Cela étant dit, regardez le front-end en utilisant les outils de développement dans Chrome/FF et voir ce que la source de l'image est en cours de rendu?

+0

Oui, cela le corrige. Il suffit de le changer pour/Home travaillé. Cela me déroute pourquoi votre page "Home" s'appelle-t-elle Index dans la vue, mais HomeController dans les contrôleurs etc? Certes, je suis un noobie mais je ne m'attendrais pas à devoir enlever des choses des noms de classes pour que l'on puisse faire en sorte que le backend ajoute magiquement la partie Controller pour la retrouver dans la bonne classe. Je n'ai pas le droit de voter mais quelqu'un peut-il répondre à cette question? Merci Ashish. – Mike

+1

Ce sont des "conventions" MVC (ce que je crois que vous pouvez remplacer si nécessaire), vous pouvez changer le nom de vue d'index en XYZ et dire retourner XYZ() comme le retour pour votre contrôleur. Cela finit par devenir votre nom de page HTML. La "magie" est configurée dans le cadre du routage MVC (regardez le fichier global.asax dans votre projet). Le contrôleur "Home" renvoie la vue "Index" dans votre scénario. –

Questions connexes