![](/img/trans.png)
[英]Why is my javascript parameter giving me a “It may be inaccessible due to a protection level.” error?
[英]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.