如何在modelView

时间:2018-03-15 10:36:37

标签: c# asp.net-mvc

我尝试使用ChartJS绘制Excel数据。 Visual Studio说的是List<Graphs> does not contain a definition for Answers.

但是,我发现我的代码无法解决问题。虽然,我过去两天只使用过VS.

有人可以查看我的代码,也许会发现一两个错误吗?谢谢!

视图模型:

using System;
using System.Collections.Generic;
using System.Linq;
using ReinovaGrafieken.Models;


namespace ReinovaGrafieken.Models
{
    public class GraphDataViewModel
    {
        public List<Graphs> GraphData { get; set; }
    }
}

图表模型:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ReinovaGrafieken.Models;

namespace ReinovaGrafieken.Models
{
    public class Graphs
    {
        public string Names { get; set; }
        public string AnswerHeaders { get; set; }
        public int Answers { get; set; }
        public string Questions { get; set; }
        public string AnteOrPost { get; set; }
    }
}

View中的一段代码:

@model ReinovaGrafieken.Models.GraphDataViewModel
@{
ViewBag.Title = "Dashboard";
Layout = "~/Views/Shared/_Layout.cshtml";
}

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")

<h2>Dashboard</h2>

<div id="chart_container">
    <canvas id="bar_chart"></canvas>

    <script>
        var answers = @Html.Raw(Json.Encode(@Model.GraphData.Answers));
        var labels = @Html.Raw(Json.Encode(@Model.GraphData.Names));

这是我从中得到想法的地方,它对那个人起作用: https://www.youtube.com/watch?v=E7Voso411Vs&t=2787s

2 个答案:

答案 0 :(得分:1)

GraphDataGraph的集合。因此,AnswersGraph上的可访问属性,而不是GraphData

答案 1 :(得分:1)

就像@Stephen Muecke写的那样,List<T>不包含名为Answers的属性。 你可以拿这个你需要的元素:

@Model.GraphData.First().Answers

(从列表中获取第一个元素)。 或者您可以使用.Foreach()方法