0

我有一个简单的 .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>
4

1 回答 1

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 结果,在这种情况下,如果对动作的调用成功,则会触发警报。

于 2013-10-21T13:14:51.327 回答