如何在MVC4中将值从控制器传递到Javascript?

如何在MVC4中将值从控制器传递到Javascript?,javascript,entity-framework,asp.net-mvc-4,Javascript,Entity Framework,Asp.net Mvc 4,我不熟悉使用实体框架的MVC4。现在,我获取列的计数和键值,并将它们存储到变量中。我想将该变量传递给JavaScript,以获取这些值并将它们分配到图表中。如何根据程序的数量获取动态图表 现在我暂时使用ViewBag 这是我的控制器代码: var qry = db.Tbl_Mst_Programs.Where(r => r.Program != null) .GroupBy(r => r.Progr

我不熟悉使用实体框架的MVC4。现在,我获取列的计数和键值,并将它们存储到变量中。我想将该变量传递给JavaScript,以获取这些值并将它们分配到图表中。如何根据程序的数量获取动态图表

现在我暂时使用ViewBag

这是我的控制器代码:

var qry = db.Tbl_Mst_Programs.Where(r => r.Program != null)
                                           .GroupBy(r => r.Program)
                                           .Select(gr => new { key = gr.Key, Count = gr.Count() }).ToList(); 

 var internship = qry[0];
            var ltv = qry[1];
            var mtv = qry[2];
            var workCampus = qry[3];

            ViewBag.internship = internship;
            ViewBag.ltv = ltv;
            ViewBag.mtv = mtv;
            ViewBag.workCampus = workCampus;
            return View();
这是我的图表视图代码:

<script type="text/javascript">
        var internship = @ViewBag.internship;
        var ltv=@ViewBag.ltv;
        var mtv=@ViewBag.mtv;
        var worcmps=@ViewBag.workCampus;

     var testdata = [
    {
        key: "Internship",
        y: internship
    },
    {
        key: "LTV",
        y: ltv
    },
    {
        key: "MTV",
        y: mtv
    },
    {
        key: "Work Campus",
        y: worcmps
    }
  ];

    function thirtySeries() {
            var data = [];
            for (var i = 0; i < 30; i++) {
                data.push({
                    key: "Series-" + i,
                    y: Math.floor(Math.random() * 100)
                });
            }
            return data;
        }

        function defaultChart(containerId, data, labelType) {
            nv.addGraph(function () {
                var width = 300,
          height = 300;

                var chart = nv.models.pieChart()
          .x(function (d) { return d.key })
          .y(function (d) { return d.y })
          .color(d3.scale.category10().range())
          .width(width)
          .height(height)
          .labelType(labelType)
          ;

                d3.select("#" + containerId + " svg")
            .datum(data)
          .transition().duration(1200)
            .attr('width', width)
            .attr('height', height)
            .call(chart);

                nv.utils.windowResize(chart.update);
                return chart;
            });
        }

var interpaint=@ViewBag.interpaint;
var ltv=@ViewBag.ltv;
var mtv=@ViewBag.mtv;
var worcmps=@ViewBag.workCampus;
var testdata=[
{
关键:“实习”,
y:实习
},
{
密钥:“LTV”,
y:ltv
},
{
关键字:“MTV”,
y:mtv
},
{
关键词:“工作校园”,
y:worcmps
}
];
函数三十系列(){
var数据=[];
对于(变量i=0;i<30;i++){
数据推送({
键:“系列-”+i,
y:Math.floor(Math.random()*100)
});
}
返回数据;
}
函数defaultChart(容器ID、数据、标签类型){
nv.addGraph(函数(){
可变宽度=300,
高度=300;
var chart=nv.models.pieChart()
.x(函数(d){返回d.key})
.y(函数(d){返回d.y})
.color(d3.scale.category10().range())
.宽度(宽度)
.高度(高度)
.labelType(labelType)
;
d3.选择(“#”+集装箱ID+“svg”)
.基准(数据)
.transition().持续时间(1200)
.attr('width',width)
.attr('height',height)
.电话(图表);
nv.utils.windowResize(图表更新);
收益表;
});
}

如果您发送的视图对象中有数据,只需按如下方式访问即可:

var ltv =  '@Model.ltv';

“请帮我进行一次动态聊天。”我假设是图表,但是在发布的代码中没有我们可以使用的东西。为什么不能使用Jquery ajax@MuhammadOmair事实上,结合了Signal、WebApi和MMVM js Framework,我没有ltv的任何模型。那么为什么不添加一个模型并将数据作为4个ViewBag对象的模型intead传递呢