0

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입니다. 기술을 사용하여 내 첫 번째 프로젝트) 그래서 뭔가 바보 같은 일을 꽤 가능합니다. 아무도 나에게 잘못을 말할 수 있습니까? 감사합니다

답변

1

img src가/Home이 아니고/HomeController가 아니겠습니까? (그들이 동등한 지 확실하지 않지만 항상 '컨트롤러'라는 단어를 추가하지 않고 컨트롤러 이름 만 사용했습니다.) 즉, Chrome/FF의 개발자 도구를 사용하여 프런트 엔드를보고 이미지 소스가 실제로 렌더링되는 것을 확인하십시오.

+0

그래, 그것을 고쳐줍니다./Home으로 변경하면됩니다. 이것은 나에게 혼란 스럽다. 왜 "홈"페이지는 뷰의 인덱스라고 불리지 만 컨트롤러의 HomeController는 무엇입니까? 틀림없이 나는 noobie이지만 클래스 이름을 벗어 버려서 백엔드에서 아마도 asp를 가져 와서 어떻게 든 마술처럼 컨트롤러 클래스를 추가하여 올바른 클래스에서 찾는다. 나는 투표 할 수있는 권리가 없습니다. 누군가가이 대답을 들려 주면 해결할 수 있습니다. 감사합니다. – Mike

+1

그것들은 MVC의 "관습"입니다. (필자는 필요할 경우 대체 할 수 있다고 믿습니다.) 인덱스에서 XYZ로 뷰 이름을 변경하고 컨트롤러에 대한 반환으로 XYZ()를 반환 할 수 있습니다. 결국 HTML 페이지 이름이됩니다. "마술"은 MVC 라우팅의 일부로 구성됩니다 (프로젝트의 global.asax 파일을보십시오). "홈"컨트롤러는 시나리오에서 "인덱스"보기를 반환합니다. –