You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.net Core 2.0模型数据无法在chartist.js图表中显示求助

Hey Jeff, let's work through this problem together—getting your KitchenSavings model's decimal values into Chartist.js can feel tricky when you're starting out, but let's break down the common fixes step by step.

First: Verify Your Model is Reaching the View

Before diving into JavaScript, make sure your controller is actually passing the populated model to your view. Here's a quick sanity check for your controller action:

public IActionResult YourViewName()
{
    // Populate your model with actual decimal values (replace with your logic)
    var kitchenSavings = new KitchenSavings
    {
        MonthlySavings = 125.50m,
        QuarterlySavings = 380.75m,
        AnnualSavings = 1510.20m
    };

    return View(kitchenSavings); // Pass the model to the view
}

And at the top of your Razor view, double-check you've declared the model type:

@model YourNamespace.KitchenSavings <!-- Replace with your actual namespace -->

Next: Safely Pass Model Data to JavaScript

The most reliable ways to get your decimal values into JS are either direct Razor injection or JSON serialization—both avoid formatting issues (like commas vs. periods in decimals).

Option 1: Direct Razor Injection (Simple Values)

Use ToString(System.Globalization.CultureInfo.InvariantCulture) to ensure decimals are formatted correctly for JavaScript (no regional commas breaking number recognition):

<script>
    // Wait for the DOM to load before running scripts (critical for alerts/charts)
    document.addEventListener('DOMContentLoaded', function() {
        // Pull values from the model and convert to JS-friendly numbers
        const savingsData = {
            monthly: @Model.MonthlySavings.ToString(System.Globalization.CultureInfo.InvariantCulture),
            quarterly: @Model.QuarterlySavings.ToString(System.Globalization.CultureInfo.InvariantCulture),
            annual: @Model.AnnualSavings.ToString(System.Globalization.CultureInfo.InvariantCulture)
        };

        // Test with alert (this should pop up now if the model is valid)
        alert(`Monthly Savings: $${savingsData.monthly.toFixed(2)}`);

        // Initialize your Chartist.js chart
        new Chartist.Bar('.ct-chart', {
            labels: ['Monthly', 'Quarterly', 'Annual'],
            series: [
                [savingsData.monthly, savingsData.quarterly, savingsData.annual]
            ]
        });
    });
</script>

Option 2: JSON Serialization (Better for Complex Models)

If your KitchenSavings model has lots of properties, serialize the whole model to JSON in one go:

<script>
    document.addEventListener('DOMContentLoaded', function() {
        // Serialize the entire model to a JS object
        const kitchenSavings = @Json.Serialize(Model);

        // Test alert to confirm data is accessible
        alert(`Annual Savings: $${kitchenSavings.AnnualSavings.toFixed(2)}`);

        // Build Chartist data from the serialized object
        const chartData = {
            labels: ['Monthly', 'Quarterly', 'Annual'],
            series: [
                [kitchenSavings.MonthlySavings, kitchenSavings.QuarterlySavings, kitchenSavings.AnnualSavings]
            ]
        };

        new Chartist.Line('.ct-chart', chartData);
    });
</script>

Common Pitfalls to Check

  • Missing Chartist.js Reference: Make sure you've added the Chartist script and CSS to your view/layout (e.g., <script src="https://cdn.jsdelivr.net/npm/chartist@0.11.4/dist/chartist.min.js"></script>).
  • DOM Loading Order: If your script runs before the DOM is ready, elements like your chart container won't exist—and your alert might not fire either. Wrapping code in DOMContentLoaded fixes this.
  • Empty Model Data: If your controller passes an unpopulated model, the values will be 0 or undefined. Test this first by adding a Razor output to your view: <p>Debug: Monthly Savings = @Model.MonthlySavings</p>. If this doesn't show a number, fix your controller logic first.

内容的提问来源于stack exchange,提问作者Jeff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 06:17:46