ASP.NET 控制項集合修改錯誤:「無法修改控制項集合...」
嘗試將控制項新增至已包含伺服器端程式碼的父控制項時,會發生此錯誤「無法修改控制項集合,因為該控制項包含程式碼區塊(即 )」區塊。當將 Ajax Toolkit 控制項(如 SliderExtender)新增至具有嵌入式聲明性程式碼的使用者控制項時,這種情況尤其常見。
理解衝突:程式碼區塊與動態控制新增
ASP.NET 程式碼區塊,由 表示,執行伺服器端程式碼。 這些區塊在控制項初始建立後無法動態變更。 新增需要修改 Controls
集合的控制項(許多擴充的常見要求)與這些靜態程式碼區塊的存在發生衝突。
解:利用資料綁定表達式
解決方案涉及替換有問題的 帶有資料綁定表達式的程式碼區塊(直接輸出值):。資料綁定表達式在運行時處理,避免與 Controls
集合衝突。
範例:
假設您的使用者控制項的 <head>
部分中有 Response.Write 語句。 將它們轉換為資料綁定表達式:
<code class="language-html"><head> <!-- Old Code (Problematic): --> <% Response.Write("Some Dynamic Text"); %> <!-- New Code (Corrected): --> <asp:Literal ID="Literal1" runat="server" Text="<%# GetDynamicText() %>"></asp:Literal> </head></code>
程式碼隱藏修改(母版頁):
在母版頁的程式碼隱藏中,新增此行以確保發生資料綁定:
<code class="language-csharp">protected void Page_Load(object sender, EventArgs e) { Page.Header.DataBind(); }</code>
GetDynamicText()
方法將負責提供動態文字。 透過採用這種技術,程式碼不再被視為靜態程式碼區塊,從而允許無縫整合 SliderExtender 等控制項。 這種方法確保控制項的動態特性不會與現有程式碼區塊發生衝突。
以上是當我的控制項包含程式碼區塊時,為什麼無法修改控制項集合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!