2009-01-13 83 views
7

我有一個C#Web應用程序,內置於Visual Studio 2008中,我們嚴重依賴用戶控件來預建ASP.NET塊。在web.config中註冊的Visual Studio 2008用戶控件未註冊intellisense

不是在每個頁面上註冊一大堆用戶控件,而是在本地(到特定文件夾)的web.config文件中註冊所有控件。好處是我們可以使用控件,並且頁面在源視圖中看起來更「乾淨」。但是,VS2008 Design視圖和Intellisense都不能識別控件在web.config中註冊的事實。但是,應用程序本身按預期工作。


通常在每個頁面的頂部,我們就會有這樣的標籤:

<%@ Register src="~/CommonControls/Foo.ascx" tagname="Foo" tagprefix="Bar" %> 

而且我們註冊控件在本地web.config中像這樣:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <pages> 
      <controls> 
       <add src="~/CommonControls/Foo.ascx" tagName="Foo" tagPrefix="Bar"/> 
      </controls> 
     </pages> 
    </system.web> 
</configuration> 

有誰知道獲取Intellisense識別這些自定義控件的修復方法?或者,有沒有更好的方法呢?

+0

我可能是錯的,但我認爲Web應用程序項目(特別是VS2008 SP1)將提供無<%@註冊...標籤智能感知。 – 2009-01-13 21:58:14

回答

2

雖然這在本地Web.Config文件中不起作用,但您可以使用根web.config文件中的位置標記來實現相同的結果。

例如:

<?xml version="1.0"?> 
<configuration> 
    <location path="MyPath"> 
     <system.web> 
      <pages> 
       <controls> 
        <add src="~/CommonControls/Foo.ascx" tagName="Foo" tagPrefix="Bar"/> 
       </controls> 
      </pages> 
     </system.web> 
    </location> 
</configuration> 
1

它可能與它沒有在主web.config文件中註冊的事實有關。通過在主web.config文件中放入一個或兩個引用進行測試。

+0

你好。 感謝您的回答。 是的,它在主web.config中工作,但我希望這可以在本地web.config中工作。當然,這是預期的行爲。 任何想法? Mike – 2009-01-19 08:52:18

0

難道是因爲您註冊了兩次控件而智能感應無法解析參考?

我會exepect的控制應在任一配置文件或Page指令

+0

嗨Blatfrig。 感謝您的建議。 這個問題有點不明確。澄清:我們沒有註冊兩次,上面的兩個代碼片段是應該工作的替代方案。我同意他們一起做會導致混亂! - Mike – 2009-01-14 09:24:40

1

進行登記我想你的示例代碼和智能感知工作在兩個aspx頁面的代碼視圖和代碼隱藏頁。您可以檢查用戶控件的類名稱,Visual Studio默認包含類名稱中的文件夾名稱。因此,您的控件可能會被命名爲CommonControls_Foo而不是您所期望的Foo

無論哪種方式,web.config文件與背後的代碼的Intellisense無關。檢查類的名稱和命名空間。