今天遇到了一個問題,用了很多方法去找原因,最后終于發現了問題的所在。
出現的提示就是標題上寫的:“當前上下文中不存在名稱"XXX"”
我開始一直以為是我自定義控件引用的時候出現了問題,因為報錯上寫的名稱我在前臺中都能找到相應的ID,這可是好幾百個啊,不可能我寫錯ID的問題,因為我是復制的。所以我以為是在編譯這之前的某處出現了問題,一上午就圍繞著自定義控件去排查了,事實證明我的反應還是有點慢半拍。
下午的時候我放棄了排查自定義控件,而是轉到了前臺,因為之前有一個很龐大的<table>,因為項目需要,我把整個<table>放入了<asp:Repeater>里,當前,如果要想使用<asp:Repeater>的話,當然要使用<ItemTemplate>這個標簽(具體的Repeater控件如何使用,在我前一篇文章里有寫),后來總之我就排除了所有其它可能影響的因素,只在<table>外面加了一個<asp:Repeater>和<ItemTemplate>,最后編譯的時候仍然報本文的錯誤,到這我只能認為確實是如報錯所述的“找不到名稱”。找問題的過程就是這么糾結的,我也是在剛才快下班的時候才最終找到,解決的。
解決辦法就是一切包含在<ItemTemplate>這類標簽里的控件,如果你想在后臺引用其ID的話,必須利用FindControl()這個方法,舉個例子:
<asp:Repeater ID="Repeater1" runat="server" > <ItemTemplate> <table id="Table1" > <tr > <td><asp:label id="label1" runat="server" /> </td> </tr > </table> </ItemTemplate> </asp:Repeater>
這樣一個前臺代碼,如果想在后臺給label1這個控件賦值的話,需要如下的引用方法:
((Label)Repeater1.Items[0].FindControl("label1")).Text = "可以正確賦值";出現這個問題的原因可能很多,我這里只是其中一種,總之無論遇到什么問題,大家都要安下心來,多去嘗試,最后總會解決的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。