警报不会出现在.cshtml页面中的页面加载上

时间:2013-10-21 13:04:38

标签: asp.net-mvc

我有一个简单的.cshtml页面,我的问题是当我运行此页面时,警报未显示。这是.cshtml页面代码:

            @{
                Layout = null;
            }

            <!DOCTYPE html>

            <html>
            <head>
                <meta name="viewport" content="width=device-width" />
                <title>ChartDataJSON</title>
                <script type="text/javascript">
                    alert('hello');
                </script>

            </head>
            <body>
                <div>
                    <div id="chart1" ></div>
                </div>
            </body>
            </html>

此外,我还有一个控制器类,通过它可以生成此视图。在该类中写的行是:

            public class jqPlotController : Controller
                {
                    //
                    // GET: /jqPlot/

                    public ActionResult Index()
                    {
                        return View();
                    }

                    public ActionResult ChartDataJSON()
                    {
                        var chartData = new List<jqplotModel>();

                        var point1 = new jqplotModel { Date = DateTime.Now.Date.ToString("yyyy-MM-dd h:mmtt"), Demand = Convert.ToDouble(1), Supply = Convert.ToDouble(3) };
                        var point2 = new jqplotModel { Date = DateTime.Now.AddDays(10).Date.ToString("yyyy-MM-dd h:mmtt"), Demand = Convert.ToDouble(2), Supply = Convert.ToDouble(4) };
                        var point3 = new jqplotModel { Date = DateTime.Now.AddDays(31).Date.ToString("yyyy-MM-dd h:mmtt"), Demand = Convert.ToDouble(6), Supply = Convert.ToDouble(6) };
                        var point4 = new jqplotModel { Date = DateTime.Now.AddDays(106).Date.ToString("yyyy-MM-dd h:mmtt"), Demand = Convert.ToDouble(4), Supply = Convert.ToDouble(2) };
                        chartData.Add(point1);
                        chartData.Add(point2);
                        chartData.Add(point3);
                        chartData.Add(point4);

                        return Json(chartData, JsonRequestBehavior.AllowGet);
                    }
                }

这是由于控制器类中的“return”关键字阻止警报弹出显示在网页上。

以前是否有人遇到过此类问题。有人可以帮我弄清楚问题吗?

编辑: 视图是关于控制器类的ChartDataJSON方法添加的。

更新:我在视图中进行了以下更改,控制器类如上所述。

            @{
                Layout = null;
            }

            <!DOCTYPE html>

            <html>
            <head>
                <meta name="viewport" content="width=device-width" />
                <title>ChartDataJSON</title>

                <script type="text/javascript">
                    $.ajax("/jqPlot/ChartDataJSON")
               .done(function (data) {
                   // do something with the data. 
                   alert("success");
               })
            </script>

            </head>
            <body>
                <div>
                    <div id="chart1" ></div>
                </div>
            </body>
            </html>

1 个答案:

答案 0 :(得分:0)

返回JSON结果时,您不会渲染任何视图(HTML标记)。要返回HTML标记,您必须编写此

return View("name of cshtml file without .cshtml");

其中[name of view]是您所引用的cshtml文件的名称(没有.cshtml扩展名),模型可以是您要在cshtml文件中使用的数据。

要使用ajax检索数据,您可以使用此命令作为示例

$.ajax( "/jqPlot/ChartDataJSON" )
  .done(function(data) {
     // do something with the data. 
     alert( "success" );
  })

更新: 要加载视图,您必须调用返回并呈现视图的操作。假设您的视图名为Index.cshtml,其完整路径为“Views / jqPlotController / Index.cshtml” 然后,您所要做的就是调用操作的URL,http:// [nameofdomain] / Index。 然后应该加载视图并且javascript函数触发并调用动作ChartDataJSON,它将返回JSON结果,在这种情况下,如果对动作的调用成功,则触发警报。