programing

새로운 asp.net 차트 작성 컨트롤 - MVC와 함께 작동합니까(결국)?

goodsources 2023. 6. 15. 21:48
반응형

새로운 asp.net 차트 작성 컨트롤 - MVC와 함께 작동합니까(결국)?

Scott Gu는 방금 .NET 팀에서 배포하는 새로운 차트 작성 컨트롤 세트에 대해 게시했습니다.그들은 믿을 수 없을 정도로 보입니다: http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx

백만 달러짜리 질문은... MVC와 함께 작동할 것인가, 만약 그렇다면, 언제 작동할 것인가 하는 것입니다.

차트 컨트롤은 두 가지 방법으로 사용할 수 있습니다.

컨트롤러에서 이미지 생성

차트를 생성하고 작업에서 이미지로 반환(차투만이 언급한 것처럼):

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");
}

웹 양식 스타일

이렇게 하면 기존 웹 양식과 마찬가지로 차트를 .aspx 보기에 포함할 수 있습니다.이를 위해 웹.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>

차트를 작성할 때 DataPoint 요소 내에서 코드를 실행할 수 없으므로 데이터를 연결하려면 View 클래스의 메서드가 필요합니다.이것은 저에게 잘 맞습니다.이렇게 하면 컨트롤이 차트 컨트롤 http 처리기에서 생성한 이미지에 URL을 렌더링합니다.배포 환경에서는 이미지를 캐시할 쓰기 가능한 폴더를 제공해야 합니다.

VS 2010 / .NET 4 지원 *

.NET 4에서 이 기능을 사용하려면 적절한 공개 키 토큰을 사용하여 차트 참조를 버전 4.0.0으로 변경해야 합니다.

또한 차트 제어는 이제 요청 경로가 아닌 현재 요청 경로에 대한 URL을 생성하는 것 같습니다.나에게 이것은 모든 차트 요청이 404개의 오류를 초래했다는 것을 의미합니다./{Controller}/ChartImg.axd경로에 의해 같은 것들이에 상응하는 것들은이 문제를 해결하기 위해 사용법을 다루는 무시 경로 호출을 추가했습니다. 보다 일반적인 솔루션이 더 나을 것입니다.

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("ChartImg.axd/{*pathInfo}");
    routes.IgnoreRoute("{controller}/ChartImg.axd/{*pathInfo}");
    routes.IgnoreRoute("{controller}/{action}/ChartImg.axd/{*pathInfo}");
...

레이저 엔진을 사용하여 MVC 3의 차트 작성 제어를 사용하려는 사용자는 다음 링크를 참조하십시오.

MVC3와 함께 MS 차트를 레이저와 함께 사용하는 방법

이미 MVC와 함께 사용할 수 있습니다. 이미지로 렌더링하기만 하면 됩니다.

대신 사용자 컨트롤을 만들고 전체 차트 개체를 지정하고 직접 렌더링합니다.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Web.UI.DataVisualization.Charting.Chart>" %>
<%
    Model.Page = this.Page;
    var writer = new HtmlTextWriter(Page.Response.Output);
    Model.RenderControl(writer);
%>

이름을 Chart.ascx로 지정하고 Shared 뷰 폴더에 넣습니다.

이제 당신은 이미지 맵과 같은 추가 html을 무료로 얻을 수 있습니다.캐시뿐만 아니라.

컨트롤러에서 다음을(를) 참조하십시오.

public ActionResult Chart(){
 var c = new Chart();
 //...
 return View(c);
}

보기에 다음과 같습니다.

<% Html.RenderPartial("Chart", Model); %>

이 기사는 저에게 가장 적합했습니다.

http://www.codecapers.com/post/Build-a-Dashboard-With-Microsoft-Chart-Controls.aspx

'개체가 개체의 인스턴스로 설정되지 않음' 또는 '세션 ID를 사용할 수 있었지만 응답 스트림이 플러시됨'에 대한 오류를 제공하지 않습니다(오류의 정확한 표현이 아님).

차트에서 드릴다운, 툴팁 또는 기타 클릭 작업을 수행할 경우 이미지로 렌더링하는 것이 유지되지 않기 때문에 이미지로 렌더링하는 것이 이미지로 렌더링하는 것을 선호하지 않았습니다.

차트를 모델에 넣고 모델을 뷰(또는 부분 뷰)에 전달한 후 asp:패널을 뷰에 배치하고 차트를 뷰 마크업의 패널에 추가하는 것이 필요했습니다.

그나저나, 2010년 9월 3일에 VS.net 2008과 MVC 2에 대한 것이었습니다(MVC에 지속적으로 일어나고 있는 변화 때문에 답변을 검색할 때 중요한 것을 발견했습니다).

저는 MVC로 테스트를 해보았는데 지금까지는 MVC로 작동하는 것 같습니다.

언급URL : https://stackoverflow.com/questions/319835/new-asp-net-charting-controls-will-they-work-with-mvc-eventually

반응형