簡體   English   中英

未聲明控制權。 由於其保護級別,它可能無法訪問

[英]Control is not declared. It may be inaccessible due to its protection level

我真的被困了,我已經嘗試了所有其他的例子,但沒有任何作用。 我對ASP.NET很新,但學得很快!

我想使用jQuery datepicker,我正在插入這個腳本

 <script>
          $(document).ready(function () {
              $(function () {
                  $("#" + '<%=txtDOB.ClientID%>').datepicker();
            });
        });
  </script>

我對aspx頁面的控制是

<asp:TextBox ID="txtDOB" CssClass="form-control" runat="server"></asp:TextBox>

一旦我關閉服務器標簽%> ,txtDOB控件下面會出現一條紅線,並說:

txtDOB未聲明。 由於其保護級別,它可能無法訪問。

我已經把這個類公開在代碼中,但沒有任何區別。 我還將腳本移到了頁面底部。 如果我將asp文本框更改為HTML輸入,它可以正常工作。

它可以正常使用ASP.NET TextBox。 因此,必須與控件的位置有關。 例如,如果它在Repeater或Grid中,您將無法直接使用它的ID,因為框架將在運行時為每一行生成唯一的ID。

創建一個簡單的webform,頁面上沒有其他控件,你會發現它就像你擁有它一樣。

請嘗試使用靜態ID模式:

<script>
          $(document).ready(function () {
                  $("#txtDOB").datepicker();
        });
</script>

它使客戶端腳本更容易(特別是當您將其移動到外部.js文件以利用緩存時),並且很容易更改ASP控件:

<asp:TextBox ID="txtDOB" CssClass="form-control" runat="server" ClientIDMode="Static"/>

您可以使用不同類型的jQuery選擇器來選擇該ID,如下所示:

<script>
    $(document).ready(function () {
        $("input[id$=_txtDOB]").datepicker();
    });
</script>

由於使用了CreateUserWizard控件,該選擇器將考慮附加到ID開頭的文本。 它比您當前的方式更干凈,您可以使用原始HTML。

<asp:TextBox ID="txtDOB" CssClass="form-control" runat="server"></asp:TextBox>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM