0

我在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 传递给图形。此外,如果我进行一些小的调整(例如GraphViewModelDrawChart操作方法中删除),即使没有数据,也会显示图表。

我想让用户可以选择过滤器然后显示图表。我希望我走在正确的道路上,并且我的代码不会被完全丢弃。

4

1 回答 1

0

GraphViewModel graph在控制器中的任何地方都没有使用。所以你不需要这个参数。

但是,如果您需要将一些 vales 传递给您的控制器,那么您可以使用 url 中的查询字符串来完成。

于 2012-10-24T16:10:51.300 回答