2012-10-24 61 views
0

被選爲我有C#剃刀ASP.NET MVC3應用。如何只在局部視圖過濾器後,呈現在視圖中的圖形已經在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傳遞給gra pH值。此外,如果我進行一些小的調整(如從DrawChart操作方法中刪除GraphViewModel),即使沒有數據,圖表仍會顯示。

我想給用戶選擇過濾器然後顯示圖形的可能性。我希望我走在正確的道路上,我的代碼不會被完全拋棄。

回答

0

您的GraphViewModel graph未在控制器的任何位置使用。所以你不需要這個參數。

但如果你需要傳遞一些值到你的控制器,那麼你可以在url中使用查詢字符串。

相關問題