ASP MVC 4.0 (VS 2012 RC의 .net 4.5)을 사용하여 내 페이지에서 렌더링 할 System.Web.UI.Datavisualization.Chart 컨트롤을 가져 오려고합니다. MVC 페이지 뷰에서 webforms 컨트롤을 직접 사용하는 것은 쉬운 일이 아니라는 것을 알고 있습니다. 컨트롤러에서 뷰를 표시 할 수있는 차트의 이미지를 반환하는 작업을 사용하려고합니다. HomeController에서 ASP MVC 4.0 차트 컨트롤 렌더링 이미지가 올바르게
나는이 :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");
}
참고 : 차트 데이터는 SQL 데이터베이스에 연결된 EF (5) 모델 (데이터가 실제로 존재하고 제대로로드 않음)에서오고있다. 다음과 같이
내가 Index.cshtml에서 그것을 사용하려고 해요 :
<img src="/HomeController/DataChart" alt="" />
이 코드 플렉스의 예에서 사용 된 것의 나에게 해당하는 것 MVC Chart Control Example CodePlex (그 이외의 웹에서 발견
코드를 실행할 때이 차트가 있어야하는 페이지의 깨진 이미지 아이콘이 있습니다. 완전한 ASP noobie입니다. 기술을 사용하여 내 첫 번째 프로젝트) 그래서 뭔가 바보 같은 일을 꽤 가능합니다. 아무도 나에게 잘못을 말할 수 있습니까? 감사합니다
그래, 그것을 고쳐줍니다./Home으로 변경하면됩니다. 이것은 나에게 혼란 스럽다. 왜 "홈"페이지는 뷰의 인덱스라고 불리지 만 컨트롤러의 HomeController는 무엇입니까? 틀림없이 나는 noobie이지만 클래스 이름을 벗어 버려서 백엔드에서 아마도 asp를 가져 와서 어떻게 든 마술처럼 컨트롤러 클래스를 추가하여 올바른 클래스에서 찾는다. 나는 투표 할 수있는 권리가 없습니다. 누군가가이 대답을 들려 주면 해결할 수 있습니다. 감사합니다. – Mike
그것들은 MVC의 "관습"입니다. (필자는 필요할 경우 대체 할 수 있다고 믿습니다.) 인덱스에서 XYZ로 뷰 이름을 변경하고 컨트롤러에 대한 반환으로 XYZ()를 반환 할 수 있습니다. 결국 HTML 페이지 이름이됩니다. "마술"은 MVC 라우팅의 일부로 구성됩니다 (프로젝트의 global.asax 파일을보십시오). "홈"컨트롤러는 시나리오에서 "인덱스"보기를 반환합니다. –