2010年6月22日

[ASPNET] 在 FormView 中使用 WebUserControl 可能會導致 Visual Studio 罷工

標題好長,不過真的有這回事嗎?

起先是坎尼的同學問有沒有碰過類似的問題
坎尼一開始也是很莫名,但發現 Visual Studio 跑他的程式就會掛
經過一陣推敲及實驗之後,總算是發現了肇事的主因

I. 問題描述

首先是怎麼個停擺法呢?

當在 FormView 中放入有問題的 WebUserControl 時
用 DesignMode 進入 FormView 的 EditTemplates 編輯模式
會看到 WebUserControl 不停的閃爍,接著 IDE 就會停擺在那邊

(註:IDE = Integrated Development Environment,本篇指 Visual Studio)

若運氣好,在發生問題之前就將游標移到 FormView 以外的位置
可以用快速鍵 Ctrl + PgUp/PgDn 切換成 Source Mode
運氣不好,大概就要叫 Task Manager 出來結束它的生命

先來看一下問題發生的影片 (請自行放大影片

影片中第一次打開 EditTemplates 時是沒有問題的
所以標題才會用 "可能" 而非 "絕對"

II. 問題解決

就在坎尼看著同學的 Code 百思不得其解時
想說再依樣畫葫蘆自己造一個一樣的 sample 來試試
咦?! 實驗結果很正常!!!

但當把坎尼同學寫的 FormView 內容 Code 直接貼到新建的 FormView 時,它又開始不停閃爍,這難道就是傳說中的鬼打牆?

接著坎尼眉頭一皺,發覺同學的 Code 裡有不對勁的地方
該不會是 WebUserControl ID 是用中文命名的關係吧?

測試結果證明:還真的就是這個原因!!!
但一般的 Controls 用中文命名都沒問題,只有 UserControl 會

原本坎尼以為所有容器型的 Template 編輯模式都會發生此情況
嗯,坎尼又猜錯了,只有 FormView 才會……

目前測試 VS2008 和 VWD2010Express 都有此情形
更之前的 VS2005 坎尼手邊沒有,無法測試
歡迎有心提供測試結果的讀者留言 ^^

III. 小結


這問題一直沒人發現 (坎尼 Google 不到)
大概是大家不怎麼用中文命名,或是沒在用 FormView 吧?
雖然 Visual Studio 為支援 unicode 的 IDE
但使用上除了文字屬性以外,還是盡量以英數字為主吧 :P

第一次錄影片,有點手忙腳亂,還請多多包涵 :D

沒有留言:

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D