0

보기에서 차트를 만들려고하는데 내용 (이름/계열/형식 등)은 모두 사용자가보기에서 선택한 컨트롤에 의해 결정됩니다. 컨트롤러모델에서 차트 만들기. (asp.net mvc3의 MS 차트 컨트롤)

//Creates status graph as specified by the controls in parent partial view or using   defaults 
    public ActionResult StatusGraph(){ 
     return View(); 
    } 

그리고 마지막으로 StatusGraph 내부보기

 <controls above my graph> 

    <img src="@Url.Action("StatusGraph")"/> 

    <controls below my graph> 

: 내 내부보기

: 나는 모든 이미 생성 된 차트를로드로

만큼 예를 들어, 괜찮습니다 : (일반 차트 this microsoft tutorial을 예로 사용)

@{ 
// TODO: use the data from the model to draw a chart 

var myChart = new Chart(width: 600, height: 400) 
    .AddTitle("Chart title") 
    .AddSeries(
     name: "Employee", 
     xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" }, 
     yValues: new[] { "2", "6", "4", "5", "3" }) 
    .Write(); 
    } 

내가 말했듯이 이것이 완벽하게 작동하고 실제로는 별도의 창 (실제로는 microsoft, 왜?)과는 달리 부모보기 내부에 차트를 렌더링하지만 StatusGraph 메서드를 확장하여 매개 변수를 받으면 차트 제목으로 시작) 및 StatusGraph에 전달하면 브라우저에서 그림을로드하려고 할 때 404 오류가 발생합니다.

뷰에 제목을 전달하려고하는 확장 된 StatusGraph 메서드에서 중단 점을 설정하면 결코 호출되지 않는 것처럼 코드가 중단되지 않습니다.

내 질문은 : 어떻게하면됩니까? 보기에서 액션으로 다른보기로 데이터를 전달할 수 있습니까?

감사합니다.

답변

1

당신 수/뷰 모델을 사용해야합니다 다음

public class MyViewModel 
{ 
    public string Title { get; set; } 
} 

과 :

public ActionResult StatusGraph(MyViewModel model) 
{ 
    return View(model); 
} 

마지막 :

@model MyViewModel 
@{ 
    var myChart = new Chart(width: 600, height: 400) 
     .AddTitle(Model.Title) 
     .AddSeries(
      name: "Employee", 
      xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" }, 
      yValues: new[] { "2", "6", "4", "5", "3" }) 
     .Write(); 
} 

및 차트는 값을 전달 렌더링 할 때 :

<img src="@Url.Action("StatusGraph", new { title = "Chart title" })"/> 
값도 img 소스에 매개 변수로 전달하는 대신 컨트롤러 액션에서 정의 할 수 물론

:

public ActionResult StatusGraph() 
{ 
    var model = new MyViewModel 
    { 
     // TODO: could come from a database or something 
     Title = "Chart title" 
    }; 
    return View(model); 
} 
+0

덕분에, 나는 그것을 시도 할 것이다, 그러나 이유는 Viewbag와 함께 작동하지 않을 것입니다 ? – Nieszka

+1

Coz ViewBag는 지옥처럼 싫증이 나네. 결코 사용하지 않으며 피어 개발자에게 사용하지 않겠다. –

+0

아아아! 고마워, 고마워, 고마워! 그것은 작동합니다! 나는 어제 저녁부터 ****의 작은 조각으로 고생하고 있었고 ViewBag를 사용했기 때문에 그것이 나에게 발생하지 않았다! (나는 특정 일을 테스트하기 위해 그렇게하는 경향이 있으며 모델을 작성하기에는 너무 게으름이다.) 다시 한번 고마워요! – Nieszka