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);
                    }
                }

これは、アラート ポップアップが Web ページに表示されないようにするコントローラ クラスの「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");

ここで、[ビューの名前] は参照していた 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 を呼び出すだけです。これにより、JSON の結果が返されます。この場合、アクションの呼び出しが成功すると、アラートがトリガーされます。

于 2013-10-21T13:14:51.327 に答える