Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将对象存储为JSON并在Javascript中访问它_Javascript_Json_Asp.net Mvc 5 - Fatal编程技术网

将对象存储为JSON并在Javascript中访问它

将对象存储为JSON并在Javascript中访问它,javascript,json,asp.net-mvc-5,Javascript,Json,Asp.net Mvc 5,我有一个包含列表的对象,我想使用High chart视图中该列表的值绘制一个图表。问题是我使用的是JavaScript,无法从JavaScript访问我的模型。 这是我的模型代码 public class MortgageCalculator { public List<double> interest_month = new List<double>(); public void calculations() { for(int i=1;i<=

我有一个包含列表的对象,我想使用High chart视图中该列表的值绘制一个图表。问题是我使用的是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));
        }
   }
}
我的视图代码:

@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>
@model Calculators.Models.MortgageCalculator
@{
ViewBag.Title=“结果”;
}
@Scripts.Render(“~/Scripts/lineChart.js”)\
@节脚本
{
}
我想从JavaScript lineChart.js中的模型中访问列表并绘制图表。我想我需要使用JSON,但我不知道如何使用。我将感谢任何帮助


谢谢

您可以通过两种方式来实现这一点。一种是使用jQuery检索JSON对象,并更改您的操作以返回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>

var calcURL='@Url.Action(“MU计算器”、“MyController”);
var利息月收入=[];
$.getJSON(计算,函数(数据){
利息月数=数据;
});
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>
@model Calculators.Models.MortgageCalculator
@{
ViewBag.Title=“结果”;
bool first=true;
字符串arrStr=“[”;
foreach(模型中的var月、利息月)
{
如果(第一)
{
第一个=假;
}
其他的
{
arrStr+=“,”;
}
ARRST+=月;
}
arrStr+=“]”;
}
....
var interestMonthsArray=@arrStr;

当然,您也可以在操作中甚至在模型类中创建此字符串。

您可以使用
var values=@Html.Raw(Json.Encode(model.interest_month))
如何在javascript中访问?我可以将其重定向到返回视图(“结果”,mortgageCalculator)这样的特定视图吗;这里我重定向到结果视图。另一个问题是如何在视图中检索模型数据。假设我想用模型数据填充视图中的表。@user3367327您使用的是方法1还是方法2?关于如何使用数据创建表,web上有很多相关的教程。
@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>