我在C#和Razor中有一个ASP.NET MVC3应用程序。
我想创建一个带有过滤器(例如年、月)的页面,一旦用户选择过滤器并单击提交按钮,就会显示一个图表。我使用以下代码(不工作): 查看Stats.cshtml
@{
ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
@{ Html.RenderPartial("StatsFilter", Model.FilterViewModel); }
<img src="@Url.Action("DrawChart")" alt="Drawing chart with HTML Helper" />
控制器
public class HomeController : Controller
{
public ActionResult Index()
{
return View("Stats", StatsViewModel);
}
[HttpPost]
public ActionResult Index(FiltersViewModel filters)
{
//Retrieve Data
return View("Stats", StatsViewModel);
}
public ActionResult DrawChart(GraphViewModel graph)
{
var chart = new Chart(width: 500, height: 600)
.AddTitle("Chart Title")
.AddSeries(
chartType: "Line",
name: "Stats",
xValue: chartData.XValues.Keys.ToList(),
yValues: chartData.XValues.Values.ToList())
.GetBytes("png");
return File(chart, "image/bytes");
}
}
视图模型
public class StatsViewModel
{
public FilterViewModel Filters { get; set; }
public GraphViewModel Graph { get; set; }
}
有了这样的解决方案,我不知道如何将 ViewModel 传递给图形。此外,如果我进行一些小的调整(例如GraphViewModel
从DrawChart
操作方法中删除),即使没有数据,也会显示图表。
我想让用户可以选择过滤器然后显示图表。我希望我走在正确的道路上,并且我的代码不会被完全丢弃。