Почему мой JavaScript не выполняется в этом коде Razor? - PullRequest
3 голосов
/ 23 июня 2011

У меня есть некоторый рабочий код Raphael-js из этого учебника: http://net.tutsplus.com/tutorials/javascript-ajax/an-introduction-to-the-raphael-js-library/, и я пытаюсь включить рабочий код в представление MVC3 Razor.JavaScript не выполняется.Я не могу найти ошибку или хорошее исправление, которое объясняет, как включить JavaScript в Razor.Вот мой .cshtml, где я ожидаю, что рисунок Rapheael будет отображаться в div canvas_container.

@{
    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>

<div id="canvas_container">
</div>

@section JavaScript
{
    <script type="text/javascript" src="@Url.Content("~/Scripts/raphael.js")" />
    <script type="text/javascript">
        window.onload = function () {
            var paper = new Raphael(document.getElementById('canvas_container'), 500, 500);
            var circle = paper.circle(100, 100, 80);
            for (var i = 0; i < 5; i += 1) {
                var multiplier = i * 5;
                paper.circle(250 + (2 * multiplier), 100 + multiplier, 50 - multiplier)
            }
            var rectangle = paper.rect(200, 200, 250, 100);
            var ellipse = paper.ellipse(200, 400, 100, 50);
        }
    </script>
}

А вот представленное представление, где javascript не выполняется:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Home Page</title>
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
</head>
<body>
    <div class="page">
        <header>
            <div id="title">
                <h1>MVC Movie App</h1>
            </div>
            <div id="logindisplay">
                    [ <a href="/Account/LogOn">Log On</a> ]
            </div>
            <nav>
                <ul id="menu">
                    <li><a href="/">Home</a></li>
                    <li><a href="/Home/About">About</a></li>
                </ul>
            </nav>
        </header>
        <section id="main">
                <h2>Welcome to ASP.NET MVC!</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>

    <div id="canvas_container">
    </div>
        </section>
        <footer>

        </footer>
    </div>
        <script type="text/javascript" src="/Scripts/raphael.js" />
        <script type="text/javascript">
            window.onload = function () {
                var paper = new Raphael(document.getElementById('canvas_container'), 500, 500);
                var circle = paper.circle(100, 100, 80);
                for (var i = 0; i < 5; i += 1) {
                    var multiplier = i * 5;
                    paper.circle(250 + (2 * multiplier), 100 + multiplier, 50 - multiplier)
                }
                var rectangle = paper.rect(200, 200, 250, 100);
                var ellipse = paper.ellipse(200, 400, 100, 50);
            }
        </script>
</body>
</html>

Спасибо Скотт

1 Ответ

11 голосов
/ 23 июня 2011

Это не работает, потому что ваш javascript следует самозакрывающемуся тегу script, который недействителен .

Вам необходимо изменить

<script type="text/javascript" src="/Scripts/raphael.js" />

на

<script type="text/javascript" src="/Scripts/raphael.js"></script>
...