1

コード ビハインドから hiddenfield 値にアクセスしようとしていますが、代わりに空の値を取得しました。ここで行っているのは、Javascript 関数から 2 つの hiddenfield 値を設定し、その後 asp:button クリックでポストバックを実行することです。ここで何が間違っているのかわかりません。親切に助けてください:

ありがとう。

 <form id="Form1" class="form" runat="server">

            <p class="SearchAddress">
                <asp:TextBox ID="searchTextField" runat="server" />
                <label for="searchTextField">
                    Location</label>
            </p>
            <p class="Date">
                <asp:TextBox ID="txtDate" runat="server">18/10/2012</asp:TextBox>
                <label for="txtDate">
                    Date</label>
            </p>
            <p class="TimeFrom">
                <asp:TextBox ID="TimeFrom" runat="server">18:00</asp:TextBox>
                <label for="txtTimeFrom">
                    Time From</label>
            </p>
            <p class="TimeTo">
                <asp:TextBox ID="TimeTo" runat="server">19:00</asp:TextBox>
                <label for="txtTimeTo">
                    Time To</label>
            </p>

            <p class="submit">
                <asp:Button ID="btnCalculateCoordinates" runat="server" Text="Post It!" 
                  onClientclick="calculateCoordinates();" onclick="btnCalculateCoordinates_Click" 
            />
           </p>

            <asp:ScriptManager ID="ScriptManager1" runat="server" />
            <asp:UpdatePanel ID="uppnlLatLong" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                         <asp:HiddenField ID="txtLatitude" runat="server"  />
                         <asp:HiddenField ID="txtLongitude" runat="server" />
             </ContentTemplate>
           </asp:UpdatePanel>
            </form>

      function calculateCoordinates() {
                    var txtAddress1 = document.getElementById('<%=searchTextField.ClientID%>');
                    var txtLat = document.getElementById('<%=txtLatitude.ClientID%>');
                    var txtLng = document.getElementById('<%=txtLongitude.ClientID%>');

                    var address = txtAddress1.value + ', ';

                    var geocoder;
                    geocoder = new google.maps.Geocoder();

                    geocoder.geocode({ address: address }, function (results, status) {
                        if (status == google.maps.GeocoderStatus.OK) {
                            var location = results[0].geometry.location;
                            txtLat.value = location.lat(); //SETTING THE HIDDENFIELD VALUE
                            txtLng.value = location.lng(); //SETTING THE HIDDENFIELD  VALUE
                        }
                        else
                            alert('Opps, sorry but we are unable to locate' + $(txtAddress1).val());
                    });
            }
        </script>
4

1 に答える 1

1

非表示を取得するには、イベントを生成したコマンドを更新パネルにも配置する必要があります。フィールド値。ajax 呼び出しに参加するすべてのコントロールを更新パネルに配置する必要があります。

<form id="Form1" class="form" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:UpdatePanel ID="uppnlLatLong" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
                <asp:HiddenField ID="txtLatitude" runat="server"  />
                <asp:HiddenField ID="txtLongitude" runat="server" />
                <asp:Button ID="btnCalculateCoordinates" runat="server" Text="Post It!"  onClientclick="calculateCoordinates();" onclick="btnCalculateCoordinates_Click" />

                   

サーバーで呼び出しが行われる前に、asp .net の ajax イベント begin_request を使用して ajax メソッドを呼び出すことができます。

Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(beginRequestHandler);

function BeginRequestHandler(sender, args)
{
       calculateCoordinates();
}
于 2012-09-30T14:13:31.780 に答える