首页 > 解决方案 > 无法加载文件或程序集“System.Web.Extensions,版本=4.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”

问题描述

我正在尝试开发一个 Web 应用程序,该应用程序根据存储在数据库中的不同数据显示一些图表。我在网上的不同教程中发现,我应该使用模型将数据从控制器传输到视图,然后使用 Json.Encode 让我的图表正确读取数据。首先它无法识别 Json.Encode 方法,所以我不得不使用 NuGet Packet Manager 安装 Microsoft.AspNet.WebPages,当我尝试运行该应用程序时,会弹出此错误。

我正在使用 .NET Core 5.0

这是错误出现的地方:

<script type="text/javascript">
var chart = document.getElementById('pie').getContext('2d');

var myChart = new Chart(chart, {
    type: 'pie',
    data : @Html.Raw(System.Web.Helpers.Json.Encode(Model.PieChartData)),
});
</script>

这就是我构建提供给视图的模型的方式:

public PieChartVM GetPieChartData()
    {
        var model = new PieChartVM();

        var labels = new List<string>();
        labels.Add("Green");
        labels.Add("Blue");
        labels.Add("Gray");
        labels.Add("Purple");

        model.labels = labels;

        var dataset = new List<PieChartChildVM>();
        var childModel = new PieChartChildVM();

        var backgroundColorList = new List<string>();
        var dataList = new List<int>();

        foreach(var label in labels)
        {
            if (label == "Green")
            {
                backgroundColorList.Add("#2ecc71");
                dataList.Add(12);
            }
            if (label == "Blue")
            {
                backgroundColorList.Add("#3498db");
                dataList.Add(20);
            }
            if (label == "Gray")
            {
                backgroundColorList.Add("#95a5a6");
                dataList.Add(18);
            }
            if (label == "Purple")
            {
                backgroundColorList.Add("#9b59b6");
                dataList.Add(50);
            }
        }

        childModel.backgroundColor = backgroundColorList;
        childModel.data = dataList;
        dataset.Add(childModel);
        model.datasets = dataset;

        return model;
    }

标签: c#.netasp.net-mvc.net-core

解决方案


你有没有试过这个:

using System.Text.Json.Serialization;

string jsonString = JsonSerializer.Serialize(yourModel);

或者

    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    serializer.MaxJsonLength = Int32.MaxValue;
    var jsonModel = serializer.Serialize(YOURMODEL);

推荐阅读