【问题标题】:Could not load file or assembly 'System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'无法加载文件或程序集“System.Web.Extensions,版本=4.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”
【发布时间】:2021-04-09 16:28:23
【问题描述】:

我正在尝试开发一个 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;
    }

【问题讨论】:

  • 尝试卸载该包“Microsoft.AspNet.WebPages”,并使用 JSON.stringify() 而不是 System.Web.Helpers.Json.Encode()。我相信您尝试使用的内容仅在 .Net Framework 中可用,在 .Net Core 中不可用。这是一个类似的帖子:stackoverflow.com/questions/51220168/…
  • @jelde015 感谢您的回答。我试过了,但现在不是错误,而是像数据集为空一样不显示图表。

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


【解决方案1】:

你试过了吗:

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);

【讨论】:

  • 第二种方法对我的程序没有好处,因为 System.Web.Script 需要 System.Web.Extensions。对于第一个,我尝试使用 HTML 数据属性或 ajax 调用拉 jsonString,但图表仍然不会显示任何内容......
猜你喜欢
  • 2020-03-08
  • 2014-12-19
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 2014-02-09
  • 2015-02-15
相关资源
最近更新 更多