在ASP.NET中嵌入饼图(Razor语法)

时间:2015-10-21 11:55:22

标签: c# asp.net asp.net-mvc razor charts

我是一个相当陌生的ASP.NET(已经在WPF中编写了很长时间,但是是ASP的新手)并且我试图创建一个显示四个饼图的仪表板应用程序。我已按照this链接上的说明操作,但我要么在整个页面上显示图表,要么在图片损坏时显示(就像<img>来源无效一样)

有人可以向我解释如何实现这种行为吗?我只是想在我的页面上显示一个简单的饼图,就是它。

谢谢! (对不起,如果这是一个重复的帖子,我发现了其他类似的问题,但没有使用Razor语法)

编辑 - 这是我的代码:

Index.cshtml:

<!DOCTYPE html>
<html>
<head>
    <title>Chart Example</title>
</head>
<body>
    <h1>Chart Example</h1>
    <p>
        The following chart is generated by the <em>ChartView.cshtml</em> file, but is shown
        in this page.
    </p>
    <p><img src="ChartView.cshtml" /> </p>
</body>
</html>

我的ChartView.cshtml :(与Index.cshtml位于同一文件夹中)

@{
    var myChart = new Chart(600, 400)
       .AddTitle("Employees")
       .AddSeries(chartType: "column",
          xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" },
          yValues: new[] { "2", "6", "4", "5", "3" });

    if (myChart != null)
    {
        myChart.Write();
    }
}

这是我在浏览器上获得的: enter image description here

2 个答案:

答案 0 :(得分:3)

您无法返回.cshtml文件(除非您危险地使用各种内部设置 - 不推荐)。

您应该指向action

最简单的测试方法是直接在浏览器中打开src - 在这种情况下&#34; ChartView.cshtml&#34;并且你应该获得404。

您需要向控制器添加一个返回视图的操作。

public HomeController : Controller 
{
    public ActionResult ChartView() 
    { 
        return View();
    }

然后

<img src='@Url.Action("ChartView", "Home")' alt="Chart"/>

您可以在浏览器中打开来测试:

/Home/ChartView

(这假设ChartView.cshtml位于文件夹&#34; Views / Home&#34;)

当您对MVC不熟悉时,快速解释一下。有一个&#39; routeConfig.cs&#39;它将传入的URL路由到控制器(类)上的动作(方法)。控制器加载视图(cshtml)并应用所有服务器端代码,然后将呈现的html返回给用户。

您不直接导航到cshtml页面,而是通过网址导航到操作。

默认路由配置为您提供以下网址:

http://[site]/[controller]/[action]

注意[控制器]不包括&#34;控制器&#34;,所以&#34; HomeController&#34;成为&#34; / Home /&#34;

此外,按照惯例,如果您未在&#39; View()&#39;中指定视图名称?然后它将在您的解决方案文件夹中查找&#34; / Views / [controller] / [action] .cshml&#39; (以及其他位置,例如&#39; / Views / Shared / [action] .cshtml&#39;(也可配置,但这些是默认设置)。

答案 1 :(得分:1)

你可以轻松地结合起来 http://morrisjs.github.io/morris.js/index.html 在mvc(razor语法)

或者你可以使用图表助手

http://www.asp.net/web-pages/overview/data/7-displaying-data-in-a-chart

更改为:

@{
    var myChart = new Chart(600, 400)
       .AddTitle("Employees")
       .AddSeries("SomeName",chartType: "Pie",
          xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" },
          yValues: new[] { "2", "6", "4", "5", "3" });

    if (myChart != null)
    {
        myChart.Write();
    }
}

你必须在iis或某个开发服务器上吃午餐