2009-05-05 149 views
2

所以我在嘗試發佈網站時遇到問題。 我在visual studio 2008 sp1中。找不到ASP.net用戶控件的名稱空間名稱

我有一堆用戶控件,並在幾頁上用編程方式使用它們。

我有behing我用

ASP.usercontrols_foo newFoo control = (ASP.usercontrols_foo)Page.LoadControl("~/UserControls/Foo.ascx"); 

如果我瀏覽到它工作正常,頁面上的代碼aspx頁面上的參考

<%@ Reference Control="~/UserControls/Foo.ascx" %> 

然後,但是當我轉到發佈該網站我得到一個編譯時錯誤。

+0

您的網站是否構建? – Cerebrus 2009-05-05 18:22:09

回答

5

呃,我在這個同樣的問題上正在流血的開發時間。有沒有人有解決這個問題?

BTW:它建立,如果你取消「允許此預編譯站點可更新」(在網站上點擊右鍵,選擇屬性頁,MSBuild的選項)

但我需要的網站是更新。

+0

1+,在過去,我遇到了同樣的問題,因爲我無法解決它,我用反射。我想知道如何解決這個問題。 – Cleiton 2009-08-24 17:20:15

0

它可能與特定類型不可用有關。你可以改變控制參考,因此類型和演員只使用基本控制類:

Control control = Page.LoadControl("~/UserControls/Foo.ascx"); 
0

是的,我可以將其強制轉換爲控件。但後來我失去了直接訪問usercontrol上的方法。

我知道我可以通過反映到控件中來訪問方法,並且我已經成功地完成了這一任務,但這遠不是理想的方式來訪問網站上的所有其他用戶控件。

而且,後續的錯誤是,它無法找到該用戶控件上的標記

<%@ Register src="CategoryRows.ascx" tagname="CategoryRows" tagprefix="abc" %> 
<abc:CategoryRows ID="CategoryRows" runat="server" /> 

需要注意的是,我可以在本地和服務器上成功運行的網站,如果我基本上XCOPY整個網站(源代碼和所有)。但發佈失敗。

+0

Riaz,您是否在發佈您的網站時選中了「使用固定命名和單頁裝配」? – Cleiton 2009-08-24 17:39:29

+0

我試過了「使用固定命名和單頁組件」選中並取消選中。 (在這兩種情況下都會檢查「允許此預編譯的站點可更新」) 我得到相同的錯誤: 「名稱空間」ASP「中不存在類型或名稱空間名稱'some_user_control_ascx'(是否缺少程序集引用?)「 – 2009-08-25 08:21:25

2

我有這個相同的問題 - 實際上,在我的情況下,我可以讓它編譯和構建我的網站,但是在做自動化構建時,它會大放異彩。

嘗試更換你的代碼如下:

ASP.usercontrols_foo newFoo control = (ASP.usercontrols_foo)Page.LoadControl("~/UserControls/Foo.ascx"); 

USERCONTROLS_Foo newFoo control = (USERCONTROLS_Foo)Page.LoadControl("~/UserControls/Foo.ascx"); 

(資本將根據您如何大寫的目錄名/控件名稱 - 但在這兩種情況下應適當突出) 。

0

投射用戶控件可能會產生很多問題。我的方法是創建一個類(比如控制類),在投射後放置所需的所有屬性和方法,並從System.Web.UI.UserControl繼承此類。然後在您的用戶cotrol代碼文件而不是System.Web.UI.UserControl用戶此控件類。

現在只要您需要使用此類的投射。它也將是輕型鑄造。

1

我找到了解決方案。如果我將在用戶定義的命名空間中聲明控件,那麼我可以直接使用控件而不使用ASP或將它引用到aspx頁面。

0

請檢查:

你有任何website.publishproj文件?
如果存在,則刪除並重試併發布代碼。

相關問題