[英]Storing object as JSON and accessing it in Javascript
我有一個包含列表的對象,我想使用“高級圖表”在視圖中使用該列表中的值繪制圖表。 問題是我正在使用JavaScript,但無法從JavaScript訪問模型。 這是我的模型代碼。
public class MortgageCalculator
{
public List<double> interest_month = new List<double>();
public void calculations()
{
for(int i=1;i<=this.nPer;i++)
{
this.interest_month.Add(Math.Round(-Financial.IPmt((this.interest / 12) / 100, Convert.ToDouble(i), this.nPer, this.loan_amount),2));
}
}
}
控制器代碼:我從用戶那里獲取值進行計算,更新我的模型,然后重定向到“結果”頁面,該頁面應該顯示感興趣的值圖表
[HttpGet]
public ActionResult M_Calculator()
{
var mortgageCalculator = new MortgageCalculator();
return View(mortgageCalculator);
}
[HttpPost]
public ActionResult M_Calculator(MortgageCalculator mortgageCalculator)
{
UpdateModel(mortgageCalculator);
//call calculation functions here
mortgageCalculator.Amortization();
return View("Results",mortgageCalculator);
}
我的查看代碼:
@model Calculators.Models.MortgageCalculator
@{
ViewBag.Title = "Results";
}
@Scripts.Render("~/Scripts/lineChart.js")\
<div id="container" style="min-width:310px; height:400px; margin:0 auto">
@section scripts
{
<script src="~/Scripts/highcharts.js"></script>
<script src="~/Scripts/highcharts.src.js"></script>
<script src="~/Scripts/lineChart.js"></script>
}
</div>
我想從我的JavaScript lineChart.js中的模型訪問列表並繪制圖表。 我想我需要使用JSON,但我不知道如何。 我將不勝感激任何幫助。
謝謝
您可以通過兩種方式執行此操作。 一種是使用jQuery檢索JSON對象,然后將您的Action更改為返回JsonResult(更簡單的IMO方法)。 另一種方法是通過使用C#創建字符串來創建JavaScript對象。
1.使用jQuery檢索JSON對象
更改您的操作以返回Json而不是View。
public ActionResult M_Calculator()
{
var mortgageCalculator = new MortgageCalculator();
mortgageCalculator.calculations();
return Json(mortgageCalculator.interest_month); // return only the array
}
在您的視圖中,您可以使用jQuery這樣檢索JSON對象。
<script type="text/javascript">
var calcURL = '@Url.Action("M_Calculator", "MyController")';
var interestMonthsArray = [];
$.getJSON(calcURL, function (data) {
interestMonthsArray = data;
});
</script>
2.使用C#創建JSON對象
在您看來:
@model Calculators.Models.MortgageCalculator
@{
ViewBag.Title = "Results";
bool first = true;
string arrStr = "[";
foreach (var month in Model.interest_month)
{
if (first)
{
first = false;
}
else
{
arrStr += ",";
}
arrStr += month;
}
arrStr += "]";
}
....
<script type="text/javascript">
var interestMonthsArray = @arrStr;
</script>
當然,您也可以在Action甚至模型類中創建此字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.