2011-09-14 72 views
0

那麼,我正在創建一個「統計」網站。已經有了一個模板,很少的數據和結構。MVC Ajax圖表控制器

我喜歡Google Charts API,特別是圖表外觀,所以我創建了一個HtmlHelper作爲它的擴展。你可以像這樣使用:

@Html.GoogleChart("Types", 300, 300, GChartType.Pie, (List<KeyValuePair<string, int>>)ViewBag.MyData) 

它有幾個重載並支持多種圖表類型和單/多維數據。它返回圖表圖像的完整html代碼。

我會在幾周內將幫助者作爲開放源代碼發佈,我只是修復了一些最終的錯誤。

正如您所看到的,我通過ViewBag將KeyValuePair的List傳遞給視圖,因此可以使用該數據生成圖表。

這工作正常,但我面臨多個控制器使用相同的數據生成圖表,我想代碼幹。你們中的一些人,絕地大師能幫助這個年輕的Padawan嗎?

我想我有兩個問題:

  • 如何不repeate圖表中的意見;
  • 如何不從多個控制器中的數據庫中檢索統計信息/過濾數據;

面對這兩個問題,如何解決它們?

  • 使用Chart Helper已創建部分視圖?
  • 使用每個特定圖表的動作創建ChartController?
  • 創建一個控制器來檢索數據並整理它?
  • 做一個簡單的類來獲取數據並將組織數據返回給多個控制器?
  • 讓一個類只返回使用Helper的圖表的url?
  • 這兩個控制器的圖表和數據?
  • 向這些傢伙發出Ajax呼叫?

有人可以幫助我瞭解可能性,也許可以顯示路徑嗎?

我很感激你在這裏度過的時光!

回答

2

如何不repeate圖表中的視圖

我不知道你的意思到底是什麼,但如果代碼被重複的量是可控的(小 - 像一個班輪),然後重複可能不是什麼大事。如果需要更多的努力不再重複,那麼它肯定是值得擔心的。

如何不 多個控制器

從數據庫中檢索統計資料/過濾的數據你是如何避免讓不止一次相同的數據嗎?如果是這樣,您需要將數據提取到中介中,並讓您的具體圖表請求發生。它可以不止一次地保存原始數據源 - 但是需要進行大量的工作來完成這個設置,所以你需要做一些分析,看看它是否值得(如利弊等)。