2017-01-07 9 views
0

Так что я пытаюсь записать координаты местоположения при загрузке страницы asp.net. Проблема в том, что значения моих скрытых полей не существуют, пока страница не будет полностью загружена. Я попытался захватить событие разгрузки, надеясь, что он будет продолжен после рендеринга и т. Д. Безрезультатно, поскольку сервер все еще работает. Я просто хочу записать свои данные в свой db на событие загрузки страницы. Я не хочу, чтобы пользователь должен был щелкнуть кнопку, чтобы записать данные, поскольку я могу это сделать, но не хочу, чтобы дополнительный вход от пользователя требовался.Coords на стороне сервера загрузки страницы

Получить код Coords JS:

navigator.geolocation.getCurrentPosition(
    function showPosition(position) { 
    $("[id*=hdnLatitude]").val(position.coords.latitude); 
    $("[id*=hdnLongitude]").val(position.coords.longitude); 
        }, 
function (error) { 
     }, { 
     enableHighAccuracy: true 
     , timeout: 5000 
     } 
    ); 

при загрузке страницы событий ASP.Net:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    'write to my db 
End Sub 

Так что я знаю, как писать в базу данных при загрузке страницы, но как я уже говорил выше, у скрытых полей пока нет данных. Мой вопрос заключается в том, как я получаю данные в них либо до загрузки страницы. Это не кажется возможным, поскольку он еще не обслуживал клиента, но могу ли я заставить postback или что-то на загрузке страницы получить эти значения, поскольку они будут загружены к тому времени? Я действительно не хочу, чтобы страница вспыхивала на пользователя, то есть загружалась дважды. Надеюсь, это имеет смысл. Заранее спасибо.

ответ

0

Итак, я решил использовать Ajax Timer. Я установил его на 6000, и он срабатывает на стороне сервера и делает то, что мне нужно. Я помещаю его в панель обновления, и он запускается без перезагрузки всей страницы. Может быть, это не лучшее решение, но выполняет эту работу.

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
      <asp:Timer ID="tmrRecord" runat="server" Interval="6000"> 
</asp:Timer> 
<asp:Label ID="lblLocation" runat="server"></asp:Label> 
    </ContentTemplate> 
</asp:UpdatePanel> 



Protected Sub tmrRecord_Tick(sender As Object, e As EventArgs) Handles tmrRecord.Tick 
    'record coords to database 
    tmrRecord.Enabled = False 
End Sub