2014-11-12 3 views
0

Работа в Asp.Net MVC 3.ASP.NET MVC 3 диаграмм и HttpPost

Controller Код:

[HttpPost] 
    public ActionResult MyChart(string sDate) 
    { 
     /*Call Entity Database*/ 
     Contact_Center_DashboardEntities3 db = new Contact_Center_DashboardEntities3(); 
     var results01 = db.sp_Report_Hybrid_Metrics("9 September", sDate, "Auto", "R2/R8", "Claims", "Claims", "R02_R08.AUTO.CLM.FMN.Q").ToList(); 


     var chart = new Chart(); 
     chart.Width = 1000; 
     chart.Height = 200; 

     var area = new ChartArea(); 
     // configure your chart area (dimensions, etc) here. 
     chart.ChartAreas.Add(area); 

     area.AxisX.MajorGrid.Enabled = false; 

     area.AxisY.MajorGrid.Enabled = false; 

     area.AxisY2.MajorGrid.Enabled = false; 
     area.AxisY2.LabelStyle.Format = "0%"; 

     // create and customize your data series. 
     var series = new Series(); 
     foreach (var item in results01) 
     { 
      series.Points.AddXY(item.Date, item.Volume); 
     } 
     series.Font = new Font("Segoe UI", 8.0f, FontStyle.Bold); 
     series.ChartType = SeriesChartType.Column; 
     series.YAxisType = AxisType.Primary; 


     // create and customize your data series. 
     var seriesSecondary = new Series(); 
     foreach (var item in results01) 
     { 
      seriesSecondary.Points.AddXY(item.Date, item.XferPer); 
     } 
     seriesSecondary.Font = new Font("Segoe UI", 8.0f, FontStyle.Bold); 
     seriesSecondary.ChartType = SeriesChartType.Line; 
     seriesSecondary.YAxisType = AxisType.Secondary; 
     seriesSecondary.LabelFormat = "0%"; 
     seriesSecondary.IsValueShownAsLabel = true; 


     chart.Series.Add(series); 
     chart.Series.Add(seriesSecondary); 

     var returnStream = new MemoryStream(); 
     chart.ImageType = ChartImageType.Png; 
     chart.SaveImage(returnStream); 
     returnStream.Position = 0; 
     return new FileStreamResult(returnStream, "image/png"); 

    } 

Столы Посмотреть Код:

@using (Html.BeginForm("MyChart", "Home", FormMethod.Post)) 
{ 
    <fieldset> 
     <div class="editor-field"> 
      <input type="submit" value="09/06/2014" name = "sDate"/> 
     </div> 
    </fieldset> 

} 

Когда пользователь нажимает кнопку Отправить , значение будет правильно передано в ActionResult «MyChart», а затем перенесет меня в представление MyChart. Что мне нужно, это передать значение через, остаться в представлении таблиц и обновить диаграмму.

+0

Вы попробовали Ajax.BeginForm? – Tobias

+0

У меня нет туманной идеи, как это использовать. Я знаю, что StackOverflow не предназначен для пошаговых инструкций, но можете ли вы привести примеры, если у вас есть? – methos028140

ответ

0

Вы могли бы попробовать что-то вроде этого:

@using (Ajax.BeginForm("MyChart", "Home", new AjaxOptions{HttpMethod= "Post", UpdateTargetId = "chartContainer", InsertionMode = InsertionMode.Replace})) 
{ 
    <fieldset> 
     <div class="editor-field"> 
      <input type="submit" value="09/06/2014" name = "sDate"/> 
     </div> 
    </fieldset> 
} 

<div id="chartContainer"> 
</div> 

Запрос делается на AJAX и вставляет ответ запроса в элемент, адресованного updatetargetid. Если кнопку отправки следует удалить после щелчка по ней один раз, поместите форму внутри div. В противном случае график будет обновляться сверхурочно, если вы нажмете кнопку отправки.

+0

попробовал это, но получал «AjaxOptions» не содержит ссылки на ошибку «FormMethod». Файл Web.config имеет System.Web.Mvc.Ajax, и я попытался включить его также в начале представления. – methos028140

+0

Извините. У Didn нет визуальной студии. Разве у вас нет intellisense? ;-) Он должен быть HttpMethod и InsertionMode = InsertionMode.Replace. – Tobias

Смежные вопросы