2

コードに問題があります。以下は、不要な html タグがあまりない単純な例です。重要なことだけを、問題を明らかにする。

ページに入ると、次のエラーが表示されます。

ユーザー コントロールの作成エラー (usercontrols/own/profilEdit.ascx)
c:\inetpub\wwwroot\umbraco\usercontrols\own\profilEdit.ascx(705): エラー CS0103: 名前 'satbCountry' は現在のコンテキストに存在しません


このエラーは<script>コードに関連しています (とにかく、この js コードは正しく、別のサブページでは完全に機能しますが、このコードがページ上にあるとクラッシュします)。このメッセージが表示される理由



ここにコード:

                <asp:View ID="vSpecialist" runat="server">

                    <asp:UpdatePanel ID="UpdatePanel3" runat="server">
                        <ContentTemplate>

                         (..)    

        <asp:ListView runat="server" ID="lvAddressess" ItemPlaceholderID="phAddress" OnItemDataBound="lvAddressess_ItemDataBound">
   <LayoutTemplate> 
<asp:PlaceHolder ID="phAddress" runat="server"></asp:PlaceHolder>

  </LayoutTemplate>
                <ItemTemplate>
              <script>
              var input = document.getElementById('<%=satbCountry.ClientID %>');
              var options = {
                  types: ['(regions)']
              };
              var autocomplete = new google.maps.places.Autocomplete(input, options);

              </script>
              <asp:TextBox CssClass="textbox"  type="text" runat="server" ID="satbCountry"></asp:TextBox>

                            </ItemTemplate>
                        </asp:ListView>


                    </ContentTemplate>
        </asp:UpdatePanel>

            </asp:View>
4

1 に答える 1

3

これはテンプレートで定義されているためだと思いますsatbCountry(つまり、何度も繰り返すことができます)。このコントロールを取得するにはclientID、サーバー側のコードを使用して各インスタンスを見つける必要があります (たとえばFindControl("satbCountry")、クライアント ID を使用して取得します)。

document.getElementById('<%=satbCountry.ClientID %>');つまり、ページをロードしてから置き換えるには、削除する必要があります

document.getElementById('<%# Container.FindControl("satbCountry").ClientID %>');
于 2012-11-18T14:59:29.153 に答える