2013-09-17 5 views
0

Я пытаюсь отобразить графики MVC, как показано в Creating a HTML5 Chart Helper Extension for ASP.NET MVC 4. У меня стандартный рабочий проект, но я не могу получить сразу несколько графиков в частичных представлениях, вызываемых одним представлением.Рендеринг HTML5 Графики в частичных представлениях показывают только пустые данные

Я буду пропустить обзор классов ChartExtensions.cs и HelperModel.cs, так как они описаны в статье выше.

Я создал контроллер с несколькими видами:

public class WelcomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     ViewBag.Message = "Creating your own HtmlHelper library"; 
     var data = WelcomeHelper.GetData1(); 
     return View(data); 
    } 

    public ActionResult DisplayAllGraphs() 
    { 
     ViewBag.Message = "Show all charts"; 
     var dataSet = new DataGroup(); 
     dataSet.Datas.Add(WelcomeHelper.GetData1()); 
     dataSet.Datas.Add(WelcomeHelper.GetData2()); 
     return View(dataSet); 
    } 

    public ActionResult PartialDisplayGraphs(TwoDimensionalData data) 
    { 
     ViewBag.Message = "Chart by request"; 
     return View(data); 
    } 
} 

Я заселить его с быстрым вспомогательный класс

public class WelcomeHelper 
{ 
    public static TwoDimensionalData GetData1() 
    { 
     var data = new TwoDimensionalData(); 
     data.Data.Add(new int[] { 2000, 3045 }); 
     data.Data.Add(new int[] { 2001, 7045 }); 
     data.Data.Add(new int[] { 2002, 9045 }); 
     data.Data.Add(new int[] { 2003, 13045 }); 
     data.Data.Add(new int[] { 2004, 15045 }); 
     data.Id = 1; 
     return data; 
    } 

    public static TwoDimensionalData GetData2() 
    { 
     var data = new TwoDimensionalData(); 
     data.Data.Add(new int[] { 2005, 18045 }); 
     data.Data.Add(new int[] { 2006, 20845 }); 
     data.Data.Add(new int[] { 2007, 23045 }); 
     data.Data.Add(new int[] { 2008, 20345 }); 
     data.Data.Add(new int[] { 2009, 23405 }); 
     data.Id = 2; 
     return data; 
    } 
} 

попытке отобразить все графики с DisplayAllGraphs.cshtml

@model PostingGraphs.Models.DataGroup 
@{ 
    ViewBag.Title = "DisplayAllGraphs"; 
} 

<h2>@ViewBag.Message</h2> 
<section> 
    @Html.Partial("PartialDisplayGraphs", data) 
</section> 

и PartialDisplayGraphs.cshtml для частичного просмотра -

@model PostingGraphs.Models.TwoDimensionalData 
@using PostingGraphs.Extensions 
@using (Html.BeginForm()) 
{ 
    <label>Model ID: @Model.Id</label> 
    @Html.Chart("sampleChart" + Model.Id, Model.Data, "Year", "Hits in Thousands") 
} 

@section Scripts 
{ 
<script type="text/javascript"> 
    $(function() { 
     barChart(); 
    }); 
</script> 
} 

Что я серия <section> с с этикеткой Model ID: # где # правильно совпадает с идентификатором данных, передаваемых в качестве модели. То, что я не получаю, это диаграмма, хотя раздел разнесен так, как ожидалось.

Я что-то упустил? Это проблема с идентификаторами в коде для расширений диаграммы, создающих javascript?

EDIT: Добавлен уникальный идентификатор идентификатора холста, который включает индекс точек данных. изменение форма внутри форма выпуск.

+0

Что такое переменная данных внутри @ Html.Partial («PartialDisplayGraphs», data)? Также вы создаете форму внутри формы, которая не является допустимым html. –

+0

@emrenevayeshirazi Переменная данных - это переменная типа TwoDimensionalData, которую я получаю из класса-помощника. В представлении отображается метка идентификатора, связанного с диаграммой. Хороший вопрос о форме в форме ... Должен был увидеть это сам. Я уточню это завтра утром. –

+0

@emrenevayeshirazi Я обновил для вопроса в форме, до сих пор не знаю, почему это не работает. –

ответ

0

Проблема заключается в том, что код примера Dot Net Curry просто не настроен для управления несколькими диаграммами на одной странице очень хорошо и требует существенной переделки. Это не сложно, просто не очень хорошее решение. Я нашел довольно приличный бесплатный набор графиков в http://www.chartjs.org/, который будет хорошо. Спасибо тем, кто потратил время, чтобы изучить это для меня и дал мне обратную связь.

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