C# Chart.JS标签字符串无法接受ViewBag数据
我正在ASP.NET Core MVC中开发一个简单的应用程序,我正在应用Chart.js来绘制图形图表。C# Chart.JS标签字符串无法接受ViewBag数据,c#,asp.net-core,C#,Asp.net Core,我正在ASP.NET Core MVC中开发一个简单的应用程序,我正在应用Chart.js来绘制图形图表。 问题出现在x轴的标记上。当我像这样手动编写JavaScript时,一切都完成了: labels: ['January', 'February', 'March'], 但是当我像这样调用@ViewBag.Exponate时,它不会显示: @Html.Raw(ViewBag.Exponate) 以下是控制器代码: var recordList = _db.OrderHeader.Wher
问题出现在x轴的标记上。当我像这样手动编写JavaScript时,一切都完成了:
labels: ['January', 'February', 'March'],
但是当我像这样调用@ViewBag.Exponate
时,它不会显示:
@Html.Raw(ViewBag.Exponate)
以下是控制器代码:
var recordList = _db.OrderHeader.Where(u=>u.UserId==sain.Value && u.ShopId==Convert.ToInt32(_LoadSessions)).GroupBy(x => x.OrderDate.ToString("MMMM"))
.Select(x => x.FirstOrDefault())
.ToList();
List<string> monthlists = recordList.Select(x => x.OrderDate.ToString("MMMM")).ToList();
ViewBag.Exponate = string.Join(",", monthlists);
var summation = _db.OrderHeader.Where(u => u.UserId == sain.Value && u.ShopId == Convert.ToInt32(_LoadSessions)).GroupBy(x => x.OrderDate)
.Select(x => new
{
countIf = x.Sum(y => y.OrderTotal)
}).ToList();
List<string> values = summation.Select(x => x.countIf.ToString()).ToList();
ViewBag.valuesX= string.Join(",", values);
如果我这样投入:
labels: ['January', 'February', 'March'],
labels: [@Html.Raw(ViewBag.Exponate)],
<script type="text/javascript">
let data = {
labels : January,February,March
};
</script>
它起作用了
但我不想那样。我希望从控制器列表对象加载标签,如下所示:
labels: ['January', 'February', 'March'],
labels: [@Html.Raw(ViewBag.Exponate)],
<script type="text/javascript">
let data = {
labels : January,February,March
};
</script>
如何实现这一点?您的序列化没有生成有效的JavaScript数组。相反,它的产出是这样的:
labels: ['January', 'February', 'March'],
labels: [@Html.Raw(ViewBag.Exponate)],
<script type="text/javascript">
let data = {
labels : January,February,March
};
</script>
让数据={
标签:1月、2月、3月
};
您需要的是字符串的JavaScript数组:
<script type="text/javascript">
let data = {
labels : ["January","February","March"]
};
</script>
让数据={
标签:[“一月”、“二月”、“三月”]
};
解决方案:使用Newtonsoft.Json进行序列化。例如
public IActionResult Index()
{
var monthlists = new List<string> { "January", "February", "March" };
// ViewBag.Exponate = string.Join(",", monthlists);
ViewBag.Exponate =
Newtonsoft.Json.JsonConvert.SerializeObject(monthlists);
return View();
}
public IActionResult Index()
{
var monthlists=新列表{“一月”、“二月”、“三月”};
//ViewBag.expontate=string.Join(“,”,monthlists);
ViewBag.Exponate=
Newtonsoft.Json.JsonConvert.SerializeObject(月列表);
返回视图();
}
当您这样做时,下面将生成有效的JavaScript数组
<script type="text/javascript">
let data = {
labels : @Html.Raw(ViewBag.Exponate)
};
</script>
让数据={
标签:@Html.Raw(ViewBag.Exponate)
};
谢谢,现在可以用了
labels: @Html.Raw(ViewBag.Exponate) ,
我必须删除方括号中的[@Html.Raw(ViewBag.Exponate)]
并将其留给
很有可能
@Html.Raw(ViewBag.Exponate)
和在控制器中
ViewBag.Exponate = Newtonsoft.Json.JsonConvert.SerializeObject(monthlists);
谢谢大家 当您使用
标签:[@HTML.Raw(ViewBag.Exponate)]
时,生成的HTML是什么样子的?