控制未被声明。 由于其保护级别,它可能无法访问
我真的陷入困境,我尝试了所有其他的例子,但没有任何工作。 我对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。
在页面上创建一个简单的网页表单,而不需要其他控件,并且您会发现它可以像您一样使用。
尝试使用静态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>
上一篇: Control is not declared. It may be inaccessible due to its protection level
