簡體   English   中英

將對象存儲為JSON並使用Javascript訪問

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM