Как вызвать JavaScript в шаблоне MVC3 - PullRequest
2 голосов
/ 22 ноября 2011

Я новичок в шаблоне ASP.NET MVC 3 и хочу вызвать функцию JavaScript в представлении (или контроллере), чтобы отобразить результат в объекте div или span.

Мое решение

  1. Я создаю новое решение ASP MVC3 (с помощью Razor)
  2. Добавить новый JavaScript в папку Script
  3. Добавьте простую функцию скрипта в новый файл JavaScript, например:

    function HolaMundo(){
    return "hola desde javascript";
    }
    
  4. Добавить ссылку из JavaScript в файл index.csHTML с моего контроллера по умолчанию.

    @section JavaScript
    {
        <script src="@Url.Content("~/Scripts/Maps.Helper.js")" type="text/javascript">  
        </script>
    }
    
  5. Наконец добавьте вызов для функции:

    <p>
        <div id="map_canvas2" style = "width:100%; height:100%">
            result from Javascript
        </div>
    </p>
    <script type="text/javascript">
        $(document).ready(function() {
         <text>
        $('#map_canvas2').text(HolaMundo());
         </text>
        });
    </script>
    

Результат

не работает


Итак, кто-нибудь может мне помочь? Я ценю вашу помощь.

1 Ответ

2 голосов
/ 22 ноября 2011

Вы должны удалить теги <text> из вашего скрипта, чтобы представление выглядело так:

<p>
    <div id="map_canvas2" style = "width:100%; height:100%">
        result from Javascript
    </div>
</p>

<script type="text/javascript">
    $(document).ready(function() {
        $('#map_canvas2').text(HolaMundo());
    });
</script>

Тег <text> используется интерпретатором Razor для обозначения литерального значения, которое будет отображаться как есть без обработки. Это полезно, когда вы смешиваете код на стороне сервера с разметкой или сценарием на стороне клиента. Например:

<script type="text/javascript">
    $(document).ready(function() {
        @if (Model.IsFooBar)
        {
            <text>$('#map_canvas2').text(HolaMundo());</text>
        }
    });
</script>

Также убедитесь, что раздел, который вы определили в вашем Index.cshtml представлении:

@section JavaScript
{
    <script src="@Url.Content("~/Scripts/Maps.Helper.js")" type="text/javascript"></script>
}

вы должны убедиться, что он зарегистрирован где-то в вашем _Layout.cshtml. Например, в <head>. Также убедитесь, что вы включили скрипт jQuery на свою страницу:

<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>
    @RenderSection("JavaScript")
</head>
...

или даже лучше перед закрывающим тегом </body>, где рекомендуется размещать скрипты, чтобы не блокировать загрузку DOM браузером при их извлечении:

    ...
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    @RenderSection("JavaScript")
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...