2017-01-25 2 views
1

Я показываю круговую диаграмму на MVC 4. Его работа прекрасна, когда доступны данные.Показать сообщение по умолчанию, если круговая диаграмма на MVC 4 не построена

Но если данные не найдены в определенном сценарии, я хочу показать сообщение по умолчанию, например «Диаграмма не может быть сгенерирована».

В настоящее время я рисую круговую диаграмму на частичном изображении.

Ниже приводится мой код.

Действие контроллера:

public ActionResult PieChart(long dateValue, string regType) 
     { 
      List<PatchingFailurePieChart> lstRegType = BAL.GetFailureDetailsChart(CreatedOn, true, regType); 

      if (lstRegType.Count > 0) 
      { 
       ArrayList xValue = new ArrayList(); 
       ArrayList yValue = new ArrayList(); 
       lstRegType.ToList().ForEach(rs => xValue.Add(rs.OSName)); 
       lstRegType.ToList().ForEach(rs => yValue.Add(rs.Count)); 

       new Chart(width: 750, height: 590, theme: ChartTheme.Blue) 
        .AddTitle("Pie chart as on date " + CreatedOn.ToString("MM/dd/yyyy")) 
        .AddLegend("OS Versions") 
        .AddSeries("Default", chartType: "Pie", xValue: xValue, yValues: yValue) 
        .Write("bmp"); 
      } 
      ViewBag.dateValue = dateValue; 
      ViewBag.regType = regType; 
      return null; 
     } 

Частичный вид:

<img src="@Url.Action("PieChart", "PatchFailure", new { dateValue = @ViewBag.dateValue, regType = @ViewBag.regType })"/> 

Вид: Что зовёт Частичный вид

@Html.Partial("PieChart"); 

Заранее спасибо за любую помощь.

+0

Привет, какую библиотеку вы используете для отправки диаграмм? –

+0

Я использую Chart Helper (https://www.asp.net/web-pages/overview/data/7-displaying-data-in-a-chart) – ssingh

+0

Я воссоздаю ваш проект, так что такое PatchingFailurePieChart? –

ответ

0

Я сделал это, но это не идеально. Данные считываются дважды: при открытии html-страницы и при создании диаграммы. В идеале было бы передавать данные диаграммы на вызов Url.Action, но, вероятно, это невозможно (?).

Использование URLs для тестирования: /ChartTest dataExists = ложь /ChartTest dataExists = истинный

Контроллер:?

public class ChartTestController : Controller 
    { 
     /// <summary> 
     /// Action method for main page. 
     /// GET: /ChartTest/ 
     /// </summary> 
     /// <param name="dataExists">It sets if chard should be displayed or "No data found text is displayed</param> 
     /// <returns></returns> 
     // 
     public ActionResult Index(bool dataExists) 
     { 
      ChartViewModel model = null; 

      if (dataExists) 
      { 
       model = new ChartViewModel 
       { 
        Chart = GetChart() 
       }; 
      } 
      else 
      { 
       model = null; 
      } 

      return View(model); 
     } 

     /// <summary> 
     /// it prepares Chart object 
     /// </summary> 
     /// <returns></returns> 
     private Chart GetChart() 
     { 
      return new Chart(600, 400, ChartTheme.Blue) 
       .AddTitle("Number of website readers") 
       .AddLegend() 
       .AddSeries(
        name: "WebSite", 
        chartType: "Pie", 
        xValue: new[] { "Digg", "DZone", "DotNetKicks", "StumbleUpon" }, 
        yValues: new[] { "150000", "180000", "120000", "250000" }); 

     } 

     /* usage: 
     * http://localhost:54087/ChartTest/GetChart?dateValue=10&regType=aaa&dataExists=false 
     * http://localhost:54087/ChartTest/GetChart?dateValue=10&regType=aaa&dataExists=true 
     */ 
     public ActionResult GetChart(long dateValue, string regType) 
     {    
      var result = GetChart(); 
      result.Write("jpg"); 
      return null; 
     } 
    } 

Класс ChartViewModel:

public class ChartViewModel 
    { 
     public Chart Chart { get; set; } 
    } 

Index.cshtml:

@model codeFirstSample.Models.ChartViewModel 
@{ 

    ViewBag.Title = "ChartTest"; 
} 

<h2>ChartTest usage example</h2> 


Chart : 

@if (@Model == null) 
{ 
    <p>No data found.</p> 
} 
else 
{ 
    <img src="@Url.Action("GetChart", "ChartTest", new { dateValue = 1, regType = 2})" /> 

} 
+0

Спасибо ... Было бы работать, чтобы показать сообщение «НЕТ ДАННЫХ» в данных случайных диаграмм недоступно. – ssingh

+0

вы можете дать мне 1 балл, если это полезно для вас ... –

+0

Я проголосовал. :) – ssingh