【发布时间】:2017-09-29 08:13:51
【问题描述】:
我正在使用 mvc 助手创建一个基于员工工作时间总和与月份的条形图。我正在使用下拉列表,按员工姓名过滤这些图表。但是我遇到了一个问题,当我单击下拉列表时,正确的图表会显示,但只是图像而不是页面视图。 我该如何解决? 请帮忙。 我在控制器中的方法。
public ActionResult CharterColumn(string Status)
{
var results = (from c in db.Clockcards select c);
var groupedByMonth = results
.Where(a => a.Name == Status)
.OrderByDescending(x => x.Date)
.GroupBy(x => new {x.Date.Year, x.Date.Month}).ToList();
List<string> monthNames = groupedByMonth
.Select(a => a.FirstOrDefault().Date.ToString("MMMM"))
.ToList();
List<double> hoursPerMonth = groupedByMonth
.Select(a => a.Sum(p => p.Hours))
.ToList();
ArrayList xValue = new ArrayList(monthNames);
ArrayList yValue = new ArrayList(hoursPerMonth);
new Chart(width: 800, height: 400, theme: ChartTheme.Blue)
.AddTitle("Chart")
.AddSeries("Default", chartType: "Column", xValue: xValue, yValues: yValue)
.Write("bmp");
return null;
}
public ActionResult Index()
{
ViewBag.Status = (from r in db.Clockcards
select r.Name).Distinct();
return View();
}
我的看法
<p>
@using (Html.BeginForm("CharterColumn", "Chart", FormMethod.Get))
{
<b>Search by Full Name:</b><font color="black">@Html.DropDownList("Status", new SelectList(ViewBag.Status), new { onchange = "this.form.submit()" })</font>
}
</p>
【问题讨论】:
-
只有一个问题,您使用的是什么字符?
-
我正在使用图表助手
-
好吧,对不起,我没明白我以为你是在让你自己的帮手。您只需要在您的视图上而不是在控制器中执行写入功能。
-
只是 .write("bmp") 部分?
-
你可以,但我不推荐它 我建议在模型中传递数据 xValue 和 yValue 并在 UI 中进行整个图表定义。这最适合分层分离,因此如果您在任何时候想要更改正在使用的图表,则无需更改控制器和视图
标签: c# asp.net-mvc charts asp.net-mvc-5 asp.net-mvc-helpers