【问题标题】:Storing object as JSON and accessing it in Javascript将对象存储为 JSON 并在 Javascript 中访问它
【发布时间】:2016-08-10 12:31:52
【问题描述】:

我有一个包含列表的对象,我想使用高图表在我的视图中使用该列表中的值绘制图表。问题是我正在使用 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,但我不知道如何。我将不胜感激。

谢谢

【问题讨论】:

  • 您可以使用var values = @Html.Raw(Json.Encode(Model.interest_month))将列表转换为javascript数组
  • 如何在 JavaScript 中访问?

标签: javascript json asp.net-mvc-5


【解决方案1】:

您可以通过两种方式做到这一点。一种是使用 jQuery 检索 JSON 对象并更改您的 Action 以返回 JsonResult(更简单的方式 IMO)。另一种方法是通过使用 C# 创建字符串来创建 JavaScript 对象。

1.使用 jQuery 检索 JSON 对象

更改您的操作以返回 Json 而不是视图。

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 甚至你的模型类中创建这个字符串。

【讨论】:

  • 我可以将其重定向到特定视图,例如 return View("Results",mortgageCalculator);在这里,我重定向到结果视图。另一个问题是如何在我的视图中检索模型数据。假设我想用模型数据在我的视图中填充一个表。
  • @user3367327 你用的是方法一还是方法二?至于如何使用数据建表,网上有很多教程。
猜你喜欢
  • 2012-10-19
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多