#c# #asp.net-mvc #model-view-controller
#c# #asp.net-mvc #модель-вид-контроллер #модель-представление-контроллер
Вопрос:
Я ищу код друзей для внедрения Google charts в мой проект mvc.
У меня есть модель, из которой я извлекаю данные:
public partial class HoursPerSite
{
public string SiteName { get; set; }
public Nullable<decimal> SiteHours { get; set; }
}
Диаграмма отрисована, и выглядит она хорошо, но в легенде показаны SiteHours, а не SiteName, как мне бы хотелось.
Вот часть контроллера:
// HOLIDAY PIE START
ViewBag.msg = db.HoursPerSites.Count().ToString();
var query = from r in db.HoursPerSites
select new { Count = r.SiteHours, Value = r.SiteHours };
var result2 = query.ToList();
var datachart2 = new object[result2.Count];
int l = 0;
foreach (var i in result2)
{
datachart2[l] = new object[] { i.Value.ToString(), i.Count };
l ;
}
string datastr2 = JsonConvert.SerializeObject(datachart2, Formatting.None);
ViewBag.dataj2 = new HtmlString(datastr2);
// HOLIDAY PIE END
Я бы хотел, чтобы в условных обозначениях круговой диаграммы отображался сайт, а не часы.
Ответ №1:
Не уверен, но так ли это:
select new { Count = r.SiteHours, Value = r.SiteHours };
Не должно быть этого: (SiteName):
select new { Count = r.SiteHours, Value = r.SiteName };
Кроме того, ваше именование, если можно так выразиться, очень плохое. Это не облегчит вашу будущую работу. Попробуйте назвать свои переменные и objects более конкретно.
Редактировать:
- Вы можете использовать регионы вместо комментариев к коду, например, что значительно упростит разделение / упорядочивание / просмотр частей / разделов кода
- Улучшение именования ваших переменных облегчит вашу жизнь, а также жизнь других людей, работающих над вашим кодом
Я бы изменил ваш текущий код на этот:
Пожалуйста, обратите внимание, что у меня нет никакого редактора и что могут быть синтаксические ошибки
#region Holiday Pie Chart
ViewBag.msg = db.HoursPerSites.Count().ToString();
var queryHoursPerSites = from r in db.HoursPerSites
select new { Count = r.SiteHours, Value = r.SiteHours };
var resultsQueryHoursPerSites = queryHoursPerSites.ToList(); // or HoursPerSitesCollection
var holidayPieChart = new object[resultsQueryHoursPerSites.Count];
int counter = 0; //
foreach (var record in resultsQueryHoursPerSites)
{
holidayPieChart[counter] = new object[] { record.Value.ToString(), record.Count };
counter ;
}
string deserialisedResults = JsonConvert.SerializeObject(holidayPieChart, Formatting.None);
// no idea what dataj2 is here ...
ViewBag.dataj2 = new HtmlString(deserialisedResults);
#endregion
Я уверен, что есть еще что «улучшить» или «изменить», но это, на мой взгляд, уже было бы улучшением.
Я уверен, что другие могут еще лучше разработать то, что я предлагаю здесь 🙂
Комментарии:
1. Спасибо, это сработало! Это код моих друзей. Единственное мое название — SiteHours, SiteName. Если это то, что вы имеете в виду, не могли бы вы объяснить, почему? Я хотел бы стать лучше!
2. Добро пожаловать, я отредактировал свой первоначальный ответ. SiteHours и SiteName — хорошие названия (я мало что знаю о контексте проекта, над которым вы работаете).
3. «Вы можете использовать регионы» — регионы непопулярны у некоторых людей , включая меня. Лучший способ «разделения / упорядочения / просмотра частей / разделов кода» — это использовать метод .
4. Я имею в виду визуальную, а не логическую структуру. Если у вас есть множество методов, лично я предпочитаю, чтобы они были (в области, которую вы можете свернуть / расформировать при необходимости), это значительно упростит и ускорит «навигацию» в крупномасштабном проекте вместо того, чтобы разделять их (частичные классы и так далее), Но это личное предпочтение. Я использую принципы разделения задач и инкапсуляции (SOLID, ООП, шаблоны проектирования …) для своего кода, но, как было объяснено выше, я использую регионы. Мне действительно нравится концепция антирегиона-Legion, довольно аккуратная «концепция» 🙂
5. @Dimitri Спасибо за совет, Дмитрий, в этом много смысла!! Теперь я определенно буду использовать regions!