Как вызвать функцию javascript в razor

Я создал массив и передал его для просмотра с помощью ViewBag.

ViewBag.MarkerList = Utility.markerList; 

И у меня есть функция для добавления маркера на карту в JavaScript:

function myFunction(item) {
    var marker = L.marker([item.lat, item.lng], { riseOnHover: true }).addTo(mymap);
    marker.bindPopup("I am a popup.<br>"+ item.lat + "," + item.lng);
}
var array = @ViewBag.MarkerList;

        array.foreach(myFunction);

Как я могу использовать foreach в ViewBag и вызывать функцию JavaScript?

где вы хотите вызвать эту функцию? при загрузке страницы или при нажатии кнопки / ссылки?

Pio 31.10.2018 13:50

Razor не выполняет JavaScript. Razor (потенциально) выводит JavaScript, который в конечном итоге запускает браузер.

Kenneth K. 31.10.2018 13:50

@Pio при загрузке страницы

ARM4N8 31.10.2018 14:24

@ ARM4N8 Как выглядит ваш JavaScript, когда вы нажимаете «Просмотр исходного кода страницы» в браузере? Это может дать вам ключ к разгадке.

yW0K5o 31.10.2018 15:11

Предварительно отформатируйте список маркеров как строку и поместите его в ViewBag. Предполагаю, что у вас List<string>. Итак, код будет выглядеть так: List<string> l = new List<string> { "Saab", "Volvo", "BMW" }; string strOutput = "["; l.ForEach(x => strOutput += String.Format("\"{0}\",", x)); strOutput = strOutput.Substring(0, strOutput.Length - 1); strOutput += "]"; ViewBag.MarkerList = strOutput;

yW0K5o 31.10.2018 15:55
1
5
111
1

Ответы 1

Вы можете преобразовать массив C# в json для javascript в методе и вызвать метод при загрузке страницы.

function myFunction() {
    var markerList= @Html.Raw(Json.Serialize(ViewBag.MarkerList));
    for(item in markerList) {
        var marker = L.marker([item.lat, item.lng], { riseOnHover: true}).addTo(mymap);
        marker.bindPopup("I am a popup.<br>"+ item.lat + "," + item.lng);
    }
}

есть ошибка! json не содержит определения для сериализации

ARM4N8 31.10.2018 14:21

Вероятно, он хотел сказать JsonConvert.SerializeObject(.... Вам понадобится @using для Newtonsoft.

Crowcoder 31.10.2018 14:42

Другие вопросы по теме