2014-12-11 3 views
-1

У меня есть LinkButton на странице aspx, где OnClientClick обновляю значение Скрытого поля, а OnClick я сохраняю это значение в базе данных.Получить обновленное значение HiddenField в коде за

<asp:LinkButton runat="server" ID="lnkUpdateGeocode" Text="Update Geocode" 
OnClientClick="updateGeoCode()" OnClick="lnkUpdateGeocode_Click" /> 

где мой updateGeoCode() функция

function updateGeoCode() { 
     var address = document.getElementById('lblDisplayAddress'); 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 'address': address }, function (results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       var latitude = results[0].geometry.location.lat(); 
       var longitude = results[0].geometry.location.lng(); 
       longitudeField = $get('<%=Longitude.ClientID %>'); 
       latitudeField = $get('<%=Latitude.ClientID %>'); 

       longitudeField.value = longitude; 
       latitudeField.value = latitude; 
      } else { 
       alert('Geocode was not successful'); 
      } 
     }); 
    }; 

и мой lnkUpdateGeocode_Click() является

latitude = Latitude.Value.IsBlankOrNull() ? 0M : Convert.ToDecimal(Latitude.Value); 
longitude = Longitude.Value.IsBlankOrNull() ? 0M : Convert.ToDecimal(Longitude.Value); 

Но я всегда получаю значения широты и долготы как 0.

So Мой вопрос - как получить обновленное значение HiddenField в CodeBehind, когда я изменяю его в javascript. Любая помощь будет оценена по достоинству.

Update:

My Value скрытое устанавливается как RUNAT = "сервер"

<asp:HiddenField ID="Longitude" runat="server" EnableViewState="false" /> 
<asp:HiddenField ID="Latitude" runat="server" EnableViewState="false" /> 

Я попытался Request.Form[Latitude.UniqueID], но она также дает пустую строку.

enter image description here

+0

Попробуйте удалить EnableViewState = «ложь» на –

+0

@RahulNikate скрытое поле я даже пробовал, но в конечном итоге не повезло. –

ответ

1

Как вы обновляете значение в JavaScript. Вы должны получить доступ к обновленному значению с помощью Request.Form.

Вы получите обновленное значение в Request.Form.

string latitudeValue = Request.Form[Latitude.UniqueId]; 

Пример:

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <div class="col-md-4"> 
     <asp:HiddenField ID="HiddenField1" runat="server" Value="1" /> 
     <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" OnClientClick="CallThis()">LinkButton</asp:LinkButton> 
    </div> 

    <script type="text/javascript"> 
     function CallThis() { 
      $('#<%= HiddenField1.ClientID %>').val(100); 
     } 
    </script> 
</asp:Content> 

enter image description here

+0

Спасибо за ваш ответ, но не повезло. –

+0

У меня есть сомнение в том, что вызов ajax geocoder.geocode не возвращается и форма не публикуется. – dotnetstep

+0

Значение обновляется в javascript, и после этого вызывается только этот метод. –

1

Установите Runat = "сервер" атрибут вашего скрытого поля, как показано ниже:

<input type="hidden" value="" id="hiddenField" runat="server" /> 

Теперь вы можете получить прямой доступ ваше скрытое значение поля в коде Ind:

var val = this.hiddenField.Value; 
Смежные вопросы