我在寫一個API和顯示數據圖表的網站。我編寫了一個抽象的「圖表」對象,其中包含諸如Series集合,各種顯示選項以及您期望在Chart對象上找到的其他內容。MVC Javascript對象
我正在使用這個抽象的Chart對象來允許我的API的用戶創建一個圖表,API可以格式化爲許多不同的輸出。例如,它可以使用MSCharts創建圖表圖像,然後使用我自己抽象的圖表對象中的適當設置填充圖表圖像。
我也試圖獲得它,這樣我的網站部分可以使用jqPlot輸出一個漂亮的動態JavaScript圖表。我最初的計劃是擁有一個MVC Partial視圖,它將我的Chart對象作爲模型,並將其轉換爲JavaScript。這對格式變得非常痛苦,跳入Razor代碼做決定,輟學輸出JavaScript等等。
$.jqplot("chart", data, {
@if (chart.Animate) { <text>animate: true,</text> }
@if (chart.Animate) { <text>animateReplot: true,</text> }
title: '@Model.Title',
...
這是比較基本的,但是當你得到儘可能吐出系列格式化信息,它變得不合理複雜,不是我想保持。
我的下一個計劃是一個MVC行動可能只是輸出使用return Json(...
這很好地工作,以點(C#代碼)
chart = new
{
animate = abstractedChart.Animate,
animateReplot = abstractedChart.Animate,
title = v.Title,
axes = new
{
xaxis = new
{
整個圖表對象...
但是當你開始格式化這個系列的時候它會下降。 jqPlot要我做這樣的事情:
series: [{
renderer: $.jqplot.LineRenderer
....
我想不出輸出以這種方式從MVC「引用」爲JavaScript對象的一種方式。
在這一點上,我開始認爲我可能需要編寫一些東西來吐出原始JavaScript,然後在我的部分視圖中使用Html.Raw()
,但我始終認爲必須有更好的方法。
所以這是我的問題 - 有沒有更好的方法?
C#<-->在MVC中的JavaScript是我也很努力的。很好的問題。我希望有一個體面的答案出現。明天我要開始調查羅斯林這種事情。 –