1

_Layout.cshtml で jquery 参照を取得しました。ただし、これが私の Index.cshtml ページで機能しているようには見えません: /Home/GetSquareRoot はヒットしませんか? (ただし、index.cshtml の jquery 参照のコメントを外すと機能します)

ViewStart.cshtml

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

インデックス.cshtml

@{
    ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">
        http://asp.net/mvc</a>.
</p>

@*<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>*@

<script type="text/javascript">
    function calculateSquareRoot(numberToCalculate) {
        $.ajax({
            type: 'GET',
            url: '/Home/GetSquareRoot',
            data: { number: numberToCalculate },
            success: function (data) { alert(data.result); }
        });
    }

</script>

    <button type="button" onclick="calculateSquareRoot(9);">
        Calculate Square</button>

_Layout.cshtml

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
    <script src="../../Scripts/jquery-1.5.1-vsdoc.js" type="text/javascript"></script>
</head>

<body>
    <div class="page">
        <header>
            <div id="title">
                <h1>My MVC Application</h1>
            </div>
            <div id="logindisplay">
                @Html.Partial("_LogOnPartial")
            </div>
            <nav>
                <ul id="menu">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
                </ul>
            </nav>
        </header>
        <section id="main">
            @RenderBody()
        </section>
        <footer>
        </footer>
    </div>
</body>
</html>

ホームコントローラー

   public JsonResult GetSquareRoot(long number)
        {
            var square = Math.Sqrt(number);
            return Json(new { result = square }, JsonRequestBehavior.AllowGet);
        }
4

3 に答える 3

1

_Layout.cshtml ファイルにも参照があるため、jQuery 参照がコメント アウトされている場合に機能します (事実を述べるだけで、おそらくこれを知っていると思います)。

これは、ルーティングが正しく設定されており、URL '/Home/GetSquareRoot' に問題がないことも意味します。

コードは問題ないように見えますが、../../Scripts/ が実際には ~/Scripts/ と同じ場所に移動することがわかります (ページの URL がどのように見えるかによって異なります)。

Google Chrome を使用して、ページのスクリプト エラーをチェックします。ページに移動し、ページを右クリックして「要素を検査」し、スクリプト エラーがないことを確認します (インスペクターの右下にする場合は赤い丸)。

AJAX 呼び出しの実行を停止している可能性のあるスクリプト エラーがある場合。

于 2012-05-01T01:18:38.727 に答える
0

アプリケーションでハードコードされたコンテンツURLを参照する場合は、常にを使用することをお勧めしますUrl.Content

したがって、これの代わりに:

<script src="../../Scripts/jquery-1.5.1-vsdoc.js" type="text/javascript"></script>

これを使って:

<script src="@Url.Content("~/Scripts/jquery-1.5.1-vsdoc.js")" type="text/javascript"></script>

このようにして、ページのURLに関係なく、jQueryスクリプトファイルへの正しいURLが常に使用されます。

于 2012-05-01T02:47:02.647 に答える
0

これを試してみてください...

public JsonResult GetSquareRoot(long? number)
        {
            var square = Math.Sqrt(number);
            return Json(new { result = square }, JsonRequestBehavior.AllowGet);
        }
于 2012-05-01T04:00:06.603 に答える