2017-01-07 12 views
0

그래서 asp.net 페이지의 페이지로드시 위치 좌표를 기록하려고합니다. 문제는 내 숨겨진 필드의 값이 페이지가 완전히로드 될 때까지 존재하지 않는다는 것입니다. 나는 언로드 이벤트를 캡처하려고했는데, 렌더링이 끝난 후에 서버가 계속 서빙되고 있기 때문에 아무 소용이 없다. 나는 단순히 내 데이터를 페이지로드 이벤트에 내 DB에 쓰고 싶다. 사용자가 데이터를 기록하기 위해 버튼을 클릭해야하지만 사용자가 추가로 입력해야하는 것은 원하지 않습니다.페이지로드 서버 쪽의 좌표

받기 좌표 코드 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 

은 그래서 페이지로드에있는 데이터베이스에 기록하는 방법을 알고 있지만, 나는 위의 말했듯 숨겨진 필드에는 아직 데이터가 없습니다. 내 질문은 페이지를로드하기 전에 데이터를 가져 오는 방법입니다. 이것은 클라이언트에게 아직 서비스를 제공하지 않았기 때문에 가능한 것처럼 보이지 않지만 포스트 백 또는 페이지로드시 강제로이 값을 가져올 때이 값을 가져올 수 있습니까? 나는 페이지의 플래시를 사용자에게 두 번로드하는 것을 원하지 않는다. 희망이 의미가 있습니다. 미리 감사드립니다.

답변

0

그래서 Ajax 타이머를 사용하기로 결정했습니다. 나는 그것을 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