Asp.net
ASP.NET 錯誤:頁面 Y.ascx 無法使用使用者控制項 X.ascx
嘗試在 Visual Studio 2010 中建構網站項目時出現以下錯誤:
頁面’/WebSite/controls/C2.ascx’ 不能使用使用者控制項’/WebSite/controls/C1.ascx’,因為它在web.config 中註冊並且與頁面位於同一目錄中。
我有 2 個網路使用者控制項:
controls/C1.ascx controls/C2.ascx控制項已在 web.config 中註冊:
<configuration> <system.web> <pages> <controls> <add src="~/controls/C1.ascx" tagPrefix="my" tagName="C1"/> <add src="~/controls/C2.ascx" tagPrefix="my" tagName="C2"/> </controls> </pages> </system.web> </configuration>C1.ascx 只包含一個靜態 HTML,C2.ascx 試圖包含 C1:
C1.ascx 只包含一些簡單的靜態 HTML。C2.ascx 試圖包含 C1.ascx:
<%@ Control Language="VB" %> <my:C1 runat="server" /> <p>Hello from C2</p>嘗試建構項目時,我在頂部收到錯誤消息。我意識到可以通過向 C2.ascx 添加另一個 Register 指令來解決此問題…:
<%@ Register Src="~/controls/C1.ascx" TagPrefix="ctl" TagName="C1" %>…但我想知道是否有更清潔的解決方案,為什麼我首先會收到錯誤?
您唯一可能的解決方案是:
- 將控制項移出目前與 outer.ascx 共享的目錄,或
- 像您已經提到的那樣在 external.ascx 中重新註冊控制項
- 在程式碼中將它們重寫為單獨庫中的控制項
我個人認為移動是最簡單的,如果它適用於您的解決方案。其次是重新註冊,儘管很煩人。如果這是您這樣做的唯一原因,那麼將它們抽象成一個完整的程式碼庫可能不值得。