2011-03-10 4 views
1

Я пытаюсь загрузить следующий метод JS:Запуск метода JS при загрузке из кода за

<script type="text/javascript"> 
    function initialize(lon,lat) { 
    var myLatlng = new google.maps.LatLng(lon,lan); 
    var myOptions = { 
    zoom: 14, 
    center: myLatlng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    var map = new google.maps.Map(document.getElementById("map"), myOptions); 

    var marker = new google.maps.Marker({ 
    position: myLatlng, 
    map: map 
    }); 
    } 
</script> 

В моем коде позади в VB.NET я тогда хочу, чтобы загрузить такие как:

initialize(53.349803617967446, -6.260257065296173) 

Мне нужно загрузить код, потому что мне нужно получить longtidude и latidude от DB.

ответ

1

Альтернативой предложение Чака - вы можете сохранить функцию в .aspx и выписывать те значения непосредственно в Javascript с использованием встроенного кода, как следующее:

initialize(<%=strLat%>, <%=strLon%>) 

strLat и strLon будут определены как защищенные переменные в коде-позади.

Если вы действительно хотите, чтобы вся функция была выписана кодом, загляните в метод RegisterClientScriptBlock.

1

Как правило, лучше не использовать функции Javascript непосредственно из кода позади. Код позади - это код, который происходит до рендеринга страницы.

Что бы я сделал, добавьте два скрытых литерала на вашу страницу, latitude и longitude, и вызовите функцию инициализации в событии готовности DOM. Функция initialize будет извлекать значения lat/long из созданных литералов.

Here is a good resource, чтобы узнать о событии готовности DOM, если вы не знакомы.

Редактировать: Если вышеуказанное не является вариантом, вы можете «вызвать» его из кода сзади довольно обходным путем (это почти функционально эквивалентно другому решению).

<body runat="server"> 

Сделайте свой тег тела выглядеть, а затем добавьте в код-за:

var javascriptFunction = string.format("javascript:initialize({0}, {1})", latValue, longValue); 
Body.Attributes.Add("Onload", javascriptFunction); 
0

Вы можете использовать RegisterClientScriptBlock, чтобы вставить Javascript на страницу с кодом.

Вы бы вставить его в любой функции вы хотите зарегистрировать его от и форматировать его, как это:

ClientScriptManager.RegisterClientScriptBlock(typeof(this), "SomeKeyName", "initialize(" + lat + "," + long + ");", true); 

где SomeKeyName является уникальный ключ, который предотвращает сценарий от добавления более одного раза в постбэка.

0

Если вы хотите зарегистрировать как функцию, так и вызов из кода, вы должны использовать функцию ScriptManager.RegisterClientScriptBlock для функции и ScriptManager.RegisterStartupScript для вызова функции. Если рендеринг функции не зависит от чего-либо от вашего кода сервера, вы бы лучше не регистрировали его из кода.

Смежные вопросы