Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
0 / 0 / 1
Регистрация: 19.12.2013
Сообщений: 64
1

Внедрение javascript в ASP.NET MVC 5

11.10.2017, 14:26. Показов 3913. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Начал писать сайт с помощью ASP Web Form, но в процесе решил перейти на ASP MVC 5 (пишу и учусь одновременно)
В ASP Web Form сделал так
C#
1
2
3
4
5
6
7
void CreateMap()
{
ClientScriptManager cs = Page.ClientScript;
System.Text.StringBuilder csText = new System.Text.StringBuilder();
csText.Append("<script type = \"text/javascript\"> function initialize() { var myOptions = { zoom: 14,center: new google.maps.LatLng(46.479743, 30.738273),mapTypeId: google.maps.MapTypeId.ROADMAP}; var map = new google.maps.Map(document.getElementById(\"map\"), myOptions);}</script>");
cs.RegisterClientScriptBlock(this.GetType(), "onload", csText.ToString());
}
Потом в Page_Load вызываю функцию.
А у предсталении так:
C#
1
2
3
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBxdVbz0fvcZdFhLcXiOUVWVNoaotJp3G4&callback=initMap"></script>
<body  onload="initialize()">
    <div id="map"  style="width: 80%; height: 600px; float: left;"></div>
Все работает

А от у ASP MVC 5 этот скрипт не работает. Делаю так
в _Layout прописываю:
C#
1
2
3
4
5
6
7
8
    <body onload="initialize()">
    @RenderSection("script", required: true)
    @RenderSection("Scripts", required: true)
    
    <div>
        @RenderBody()
    </div>
</body>
А вот index.cshtml
C#
1
2
3
4
5
6
7
@section Scripts {
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBxdVbz0fvcZdFhLcXiOUVWVNoaotJp3G4&callback=initMap" type="text/javascript"></script>
    <script type="text/javascript">
function initialize() {var myOptions = {zoom: 14,center: new google.maps.LatLng(46.479743, 30.738273),mapTypeId: google.maps.MapTypeId.ROADMAP};var map = new google.maps.Map(document.getElementById("map"), myOptions);}
    </script>
}
<div id="map"></div>
Подскажите в чем пролема? Где ошибка? Или может необходимо вообще использовать другой подход. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2017, 14:26
Ответы с готовыми решениями:

ASP.NET MVC 4,ASP.NET MVC 4.5 и ASP.NET MVC 5 большая ли разница между ними?
Начал во всю осваивать технологию,теперь хочу с книжкой посидеть и вдумчиво перебрать всё то что...

Asp.Net MVC 2. Передача параметров из модели в javascript
Как передать параметры из модели в функцию javascript ? &lt;input type=&quot;submit&quot; onclick=&quot;return...

ASP.NET MVC как передать переменную из javascript в ViewBag
ASP.NET MVC как передать переменную из javascript в ViewBag Ip_GetUser.js function...

Pure javascript или jquery в проектах ASP .NET MVC
Пишу на чистом javascript, и пока трудностей не возникало. Но по статистике многие используют...

7
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
11.10.2017, 14:47 2
Цитата Сообщение от kadet_of_viti Посмотреть сообщение
callback=initMap
Цитата Сообщение от kadet_of_viti Посмотреть сообщение
function initialize()
Код
initMap != initialize => true;
0
0 / 0 / 1
Регистрация: 19.12.2013
Сообщений: 64
11.10.2017, 14:53  [ТС] 3
EveKS, извини, но я новичок. Не понимаю что необходимо сделать. Можешь обяснить для того кто в танке. Не доходит. Спасибо.
0
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
11.10.2017, 14:55 4
Поменять име функции function initialize() на initMap или наоборот, в строке подключения.

<body onload="initialize()"> initialize - не нужно.
0
0 / 0 / 1
Регистрация: 19.12.2013
Сообщений: 64
11.10.2017, 16:04  [ТС] 5
EveKS, сделал то что ты посоветовал, но всё также в ASP Web Form работает, а в ASP MVC 5 нет. может ещё что-то упустил?
0
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
11.10.2017, 16:38 6
Цитата Сообщение от kadet_of_viti Посмотреть сообщение
Javascript
1
<body onload="initialize()"> @RenderSection("script", required: true) @RenderSection("Scripts", required: true) <div> @RenderBody() </div> </body>
Javascript
1
2
3
4
5
<body onload="initialize()"> 
<div> @RenderBody() </div>
 
@RenderSection("script", required: true)
@RenderSection("Scripts", required: true)  </body>

Затем
C#
1
2
3
4
5
6
7
8
9
10
11
<div id="map"></div>
 
@section Scripts {
 
    <script type="text/javascript">
function initMap() {var myOptions = {zoom: 14,center: new google.maps.LatLng(46.479743, 30.738273),mapTypeId: google.maps.MapTypeId.ROADMAP};var map = new google.maps.Map(document.getElementById("map"), myOptions);}
    </script>
 
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBxdVbz0fvcZdFhLcXiOUVWVNoaotJp3G4&callback=initMap" type="text/javascript"></script>
 
}
1
0 / 0 / 1
Регистрация: 19.12.2013
Сообщений: 64
11.10.2017, 16:49  [ТС] 7
Всё разобрался. Я так понял что эта строчка
C#
1
    <script type="text/javascript"  async="async" defer="defer" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBxdVbz0fvcZdFhLcXiOUVWVNoaotJp3G4&callback=initMap"></script>
должна быть в теге head. а сам скрипт в body.
Вот что у меня. _Layout:
C#
1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
<html>
<head>
    @RenderSection("script1", required: true)
</head>
<body>
    @RenderSection("script2", required: true)
    <div>
        @RenderBody()
    </div>
</body>
index.cshtml:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@section script1 {
    <script type="text/javascript"  async="async" defer="defer" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBxdVbz0fvcZdFhLcXiOUVWVNoaotJp3G4&callback=initMap"></script>
}
@section script2 {
    <script type="text/javascript">
        function initMap() {
            var uluru = { lat: -25.363, lng: 131.044 };
 
            var map = new google.maps.Map(document.getElementById("map"), {
                zoom: 4,
                center: uluru
            });
        }
    </script>
}
И ОБЯЗАТЕЛЛЬНО задайте размер карты
<div id="map" style="width: 80%; height: 600px; float: left;"></div>
Так у меня работает.
0
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
11.10.2017, 16:52 8
Цитата Сообщение от kadet_of_viti Посмотреть сообщение
Всё разобрался. Я так понял что эта строчка
Он должен быть в footer, но вызываться перед скриптом google
0
11.10.2017, 16:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2017, 16:52
Помогаю со студенческими работами здесь

Стоит ли изучать asp.net mvc 4 из за скорого выхода asn.net mvc vNext ?
Доброго вечера! Как я узнал, Microsoft скоро планирует выпустить новый веб-фреймворк с названием...

Стоит ли изучать ASP.NET MVC 4 не зная просто ASP.NET?
Стоит ли сразу изучать ASP.NET MVC не зная просто ASP.NET? И еще вопрос: мне нужно освоить MVC...

Как переделать проект ASP.NET WebForms в ASP.NET MVC 5
Есть маленький проектик, который я выращиваю. Началось всё с ASP.NET 4 WebForms (.Net Framework...

ASP.NET MVC timestamp vs javascript timestamp
Здравствуйте! ASP.NET MVC фиксирует TotalMilliseconds вот таким образом: public static long...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru