程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> ASP.NET AJAX 控件中HTML Intellisense功能的丟失

ASP.NET AJAX 控件中HTML Intellisense功能的丟失

編輯:關於.NET

症狀:

你在使用ASP.Net AJax Beta1 或 Beta2,創建了基於 .master 母版頁文件的一個.aspx 頁面,你添加了 <asp:scriptmanger>, <asp:updatepanel>, <asp:updateprogress> 或 <ASP:timer> 控件到內容頁面,發現在這些控件或內嵌在它們中的任何控件裡,標識符號的Intellisense功能不工作了:

在上面的截圖裡,注意到ScriptManager, UpdatePanel and ContentTemplate標識符的下面有紅色的波浪形彎線。當你在文檔裡鍵入這些元素時,你也得不到標識符的自動完成。但你仍可以編譯,運行也沒問題,WYSIWYG 設計器照舊工作,但你失去了源碼編輯器裡的Intellisense功能。

該問題的一些背景知識:

ASP.NET 2.0添加了在web.config文件裡注冊控件的支持,無論是編譯過的還是.ascx 用戶控件,去掉了總是要在頁面的上方添加 <%@ Register %> 指令的要求。想了解這方面的細節,或看一個實際例子,請查看我最近在 ASP.Net Connections 大會上做的技巧和訣竅講座的內容。

這個特性的一個很酷的方面是,它現在也允許你把多個程序集映射到同個標識符前綴上。我們在ASP.NET AJax 中使用了這個功能,以使上面這些控件使用 <asp:> 標識前綴,雖然它們居於包含了ASP.Net其他部分的 system.web.dll 外的另外的程序集之中。

不幸的是,我們在發布ASP.Net AJax Beta1時,發現了VS標識符Intellisense引擎的一個缺陷,其問題在於,當你把多個程序集映射到同個 <asp:> 標識前綴時,而且在基於母版頁的.aspx內容頁面的 <ASP:content> 裡使用這些控件時,你會失去Intellisense功能。

如何解決這個問題

這個intellisense的問題將在VS 2005 SP1裡解決。

與此同時,有2個替代方案,你可以馬上修正這個問題:

1) 編輯.ASPx內容網頁時,在Visual Studio IDE中,把相關.master母版頁文件保持在打開狀態。發現其實只有在.master文件關閉時,Intellisense引擎才會出問題。只要該文件在同一個IDE裡一直是打開的,它定位程序集毫無問題,會給予你完整的Intellisense功能:

上面的截圖跟前面一個截圖是同一個例子,唯一的區別是,我在後面同時打開了Site.Master 文件。那個文件打開時,我就得到ASP.Net AJax控件元素的完整的Intellisense功能,沒有Intellisense錯誤。

或者,如果你不想把 .master 文件保持打開的話,你也可以使用下面這個方法:

2) 進入你的web.config文件,把ASP.Net AJax 控件的標識前綴改成不是 <ASP:> 的別的東西。譬如,取代這個:

      <controls>
        
<add tagPrefix="ASP" namespace="Microsoft.Web.UI" assembly="Microsoft.Web.Extensions" />
        <
add tagPrefix="ASP" namespace="Microsoft.Web.UI.Controls" assembly="Microsoft.Web.Extensions" />
      </
controls>

 而把它們改成類似這樣:

      <controls>
        
<add tagPrefix="AJax" namespace="Microsoft.Web.UI" assembly="Microsoft.Web.Extensions" />
        <
add tagPrefix="AJax" namespace="Microsoft.Web.UI.Controls" assembly="Microsoft.Web.Extensions" />
      </
controls>

然後,你要將你的.ASPx 頁裡的標識前綴更新到使用這個新的標識前綴。

上面2種方法都可以解決問題,還你完整的 intellisense 功能。這個問題應該會在VS 2005 SP1裡被徹底解決。

希望本文對你有所幫助,我也為造成的不便表示歉意

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved