對於寫網頁的朋友而言, 或許和我一樣, 最害怕的問題就是, 在冗長的開發過程中解決了很多疑難雜症, 一路打通關之後, 卻在終於要發行到目標網站時, 才發生問題。這就像千辛萬苦爬上了 101 的頂樓, 才發現門竟然打不開
2015/1/7
2014/9/29
[ASP.NET] 讓游標停駐在文字框最後一字
最近遇到一個小需求。原本我為了讓使用者方便, 在不使用 TimePicker 的情況下, 讓他們可以手動方式輸入日期時間 (若使用 DateTimePicker 之類的工具, 效率會減少十倍)。然後我又幫他們自動加入當天的日期 (因為在大多數情況下, 他們需要輸入的日期都是當天, 但是都不是現在時間), 例如 "2014/9/29 "。接著, 我又下了 autofocus 屬性, 當網頁載入後, 讓這個文字框自動成為焦點, 因為這是第一個必須輸入的欄位。如此, 他們只要輸入時間的部份就行了。
問題是, 他們每次要輸入時間時, 都必須再按一下滑鼠游標或者 End 鍵, 才能讓文字游標指到日期的後面, 這樣才能開始輸入時間。雖然這只是一個小工夫, 但是總讓人覺得討厭! 難道不能讓游標自動跑到最後面嗎?
2014/1/6
[ASP.NET] Visual Studio 2013 的 Form 驗證
(本文適合已熟悉 ASP.NET 表單驗證和 Entity Framework 的開發者, 而非新手開發者)
從 Visual Studio 2013 / .Net Framework 4.5.1 開始, 關於使用者驗證這件事, 可以說做了革命性的改變。大家在過去 12 年來再熟悉不過的表單驗證方式, 在這個版本中再也沒辦法使用 (或者更正確地說, 是沒辦法延用過去的做法)。相反地, 我發現它對 AD 認證的支援變得異常地簡單; 如果你在建立專案時選擇 Windows 驗證, 那麼你的網站自動可以抓取使用者的網域登入帳號, 不必再寫任何程式。如果你要寫的是企業內部網站的話, 就變得相當容易了。
至於新的表單驗證方式, 我們會面臨的最大的困難在於不熟悉, 以及資訊太少(未來會慢慢變多, 這是確定的)。其實我是直到最近一個專案中需要用到表單驗證, 才突然驚覺它被改掉了。但是兩個多禮拜下來, 我覺得它其實基本上和原來的表單驗證方式並沒有太多的差異。你只要了解它的運作原理, 就會逐漸習慣。
2013/12/23
[ASP.NET] 在 GridView 中對欄位進行排序時顯示上下箭頭
自從 ASP.NET 4.0 開始, GridView 控制項就多了一個 SortedAscendingHeaderStyle 和 SortedDescendingHeaderStyle 屬性。顧名思義, 它是專門針對欄位排序功能而設計的。在 MSDN 說明頁上(見上方連結), 它載明了「當這個屬性設定為 true 時,指示排序方向的箭號會在資料行標題中顯示」。可是我們應該在哪裡把它設定為 true 呢? 我們又應該在哪裡指定上下箭頭呢
2013/12/18
[SQL] SQL 安裝與配置小小最佳實務
我個人算不上什麼驚天動地的 SQL 專家, 只是一個離不開 SQL 的開發人員而已。在這篇文章裡, 我也不打算講什麼高深的 SQL 理論或技巧, 只打算把我個人研究出來的小小 SQL 管理心得拿來給大家分享。
我還記得以前在設置開發環境時, 經常被 SQL 搞得七暈八素。不是怎樣都連不上資料庫, 就是必須牢記在什麼情況下要先裝 SQL, 後裝 VS, 再裝 SQL Management Studio 等等。不過時序來到 VS2013, 我發現似乎所有的事情都變得簡單了, 而且穩定。不過, 坦白說, 過去的陰影始終籠罩在心裡, 所以我把我的成功經驗寫在下面, 萬一有人又遇到類似的問題, 或許可以參考我的方法, 成功率也許高一點 (至少我自己試過是成功的)。此外, 我也要分享一個許多人不知道或者不熟悉的管理小技巧。
2013/12/2
[ASP.NET] 在 App_Code 下存取外部 Assembly
App_Code 是一個 ASP.NET 網站專案的特殊子目錄。如果你的專案不是 Web Site 專案而是 Web Application 專案, 你並不需要、也不應該特別建立一個 App_Code 子目錄來存放你的程式碼 -- 除非是為了某種特殊的目的
2013/11/25
[ASP.NET] 在網頁上執行靜態 JavaScript 的超級小技巧
我想, 凡是已經寫 ASP.NET 很久的程式設計師, 一定都知道如何透過 RegisterStartupScript(key, script) 和 RegisterClientScriptBlock(key, script) 這兩種指令在頁面中插入動態的 JavaScript 程式。但是只有這種方法嗎?
以下, 我要示範一個「超級小」的技巧, 以更簡單的方式達到相同或類似的功能。只不過, 這種方式比較適合「罐頭」式的 JavaScript 指令, 也就是比較偏向靜態、很少改變的 JavaScript 程式。我將使用 ASP.NET 的網頁的 PostBack 機制, 讓已經寫好的 JavaScript 程式在網頁 PostBack 之後自動執行
2013/10/27
打造動態 Enum
在 C# 中 Enum 是一個純粹靜態的結構, 當你宣告了一個 enum, 那麼它的值就固定在那裡了, 你非得去更改它的定義, 才能看到內容項目的變更。那麼, 如果我們能把它的內容項目 (包括它的值) 變成動態的呢?
在接下去之前, 我必須先把它適用的情境清楚的描述一遍, 否則大家可能無法理解為什麼要這麼做
2013/8/30
[ASP.NET] 莫名其妙的「不允許循環檔案參考」錯誤
這是一個真的莫名其妙的問題, 而且這個問題在本機測試時並不會發生, 只有當發行到 IIS (不論是本機或遠端伺服器) 時, 才會發生, 並造成發行失敗。
問題的症狀是這樣的, 當我想把一個 ASP.NET 專案發行到本機的 IIS 時, 跳出一個 「不允許循環檔案參考」錯誤, 從而導致發行失敗。但是, 如果在 VS (我使用的是 VS2012) 中執行, 倒是沒有任何問題發生。
後來我在 "Circular file references are not allowed. Publish ASP.NET (2.0) Website" 這篇文章裡找到解答。原來我並不是唯一遇到這種問題的人; 有其他朋友發現, 這種問題只會出在特定的情況之下, 就是網頁中若包含 User Control, 而且這個 User Control 是放在上層子目錄的時候。此外, 也有人提到這問題發生在網頁有套用巢狀 Master Page 的情況。
在我的專案中, 問題出在我將一個新網頁加入, 而且我有套用巢狀的 Master Page, 也加入了一個 User Control。不過, 我發現我即使改用單層的 Master Page, 錯誤依舊。而且, 我的 User Control 和網頁是位於同一個子目錄。
不管怎樣, 我把這個網頁搬到其它子目錄之後, 這個問題就解決了!
2013/8/27
在單元測試程式中取得 Connection 字串
這是一個相當古老的問題。不過, 似乎也很久沒遇到過了。當今天再度遇到時, 突然被嚇了一跳。問題是這樣的, 當我們建立單元測試專案時, 如果你看到測試不成功的原因是什麼「System.ArgumentException: 此處不允許應用程式相對虛擬路徑 '~/'」之類莫名其妙的錯誤的話, 大概就是依照以下解法就對了。
2013/7/11
在 VS2013 Preview 中使用 Scaffolding 快速建立 CRUD 網頁
在 VS2013 Preview 中, 我們可以透過它的 Scaffolding (支架) 功能在 MVC 專案中快速建立一整套的 CRUD 網頁, 不用寫一行程式碼。甚至, 它已經內建了 Bootstrap 框架, 這使得我們甚至不需要具備美工能力, 也能設計出比以前漂亮得多的網頁。
在 Visual Studio 建立資料庫專案
我從很久以前就對 Visual Studio 中新加入的資料庫專案範本感到很有興趣; 但是一來我並不熟資料庫, 二來工作上也用不到, 所以從來沒有真正較深入地研究它, 只有嘗試過建立幾個測試專案, 然後被搞得灰頭土臉之後, 被迫放棄。但是最近由於工作上突然有了一點變化, 讓我回頭來思考在原來的方案中加入一個資料庫專案的想法, 所以就重新把它又拿來研究一番。
2013/6/30
ASP.NET 和 VS 2013 新功能彙整
微軟在近日 (2013/6/26) 公開了最新的 Visual Studio 2013 Preview (預覽) 版本; 我在前幾天的發文中也有提到過。不過, 到底這個最新版本有什麼不一樣之處? 微軟又為什麼在短短一年之後, 再度推出 Visual Studio 的新版本? 由於現在的資訊都不充份, 我想, 唯一, 也是最好的答案, 恐怕也只有 Scott Hanselman (現任微軟 Azure & Web Tools 的 Principal Community Architect 兼書籍作者) 能夠回答你了! 有興趣的朋友可以參考由他主講的 What's New in ASP.NET and Visual Studio 2013 這段影片
2013/6/28
使用 VS2013 Preview 開發 ASP.NET 專案並登入 AD
下載 Visual Studio 2013 Preview 之後, 我迫不急待地把它安裝起來, 並且建立了幾個測試用的專案。我把幾個值得注意的細節記錄起來, 同時供大家做個參考。
2013/6/18
在 ASP.NET Web Form 專案中加入 Bootstrap 套件
Bootstrap 是由 Twitter 所開發的一個免費的網頁框架, 它提供了許多從基本到進階的 CSS 和 JavaScript 功能, 讓網頁開發者可以很快速地把網頁架起來, 同時還兼顧了還算不錯的美感。通常, 網頁設計師不會、也不懂得美工設計, 所以我們如果只是很單地把網頁建立起來, 很不幸的, 這個網頁通常不會跟「美觀」這兩個字有交集。但是有了 Bootstrap, 你的網頁很容易就能讓人為之驚艷 (尤其是跟之前的做法對比的話)。
當然, 我不是說 Bootstrap 從此會讓美工人員丟掉工作。我相信美工人員也會感謝 Bootstrap 的存在, 這樣至少可以讓網頁在進行 layout 時省去一些功夫, 能夠早一點下班。
2013/5/26
JavaScript 中的日期比較問題
在我們在處理 JSON 的日期轉換時, 總會遇到轉得過去, 卻轉不回來的問題。這時候, 我們必須另外把日期字串進行重新格式化的動作。這個問題可以在 Stack Overflow 網站上找到現成的解答, 就是使用一個 dateReviver 函數, 當作 JSON.parse 方法的第二個參數。
2013/4/19
JavaScript 的繼承與實作
我差不多是在十幾年前開始接觸 JavaScript 的。和許多那時候的程式設計師一樣, 我並沒有很認真的把 JavaScript 當作「正常」的程式語言來對待。我寫的程式主要是以 ASP.NET 搭配 VB.NET 為主, 後來改為 C#; 可以說從一開始就戴著物件導向的眼鏡。而那個時候我們都被教導說 JavaScript 並非 OOP, 所以我也從來不認為 JavaScript 是一種物件導向語言, 也因此, JavaScript 從一開始就被我當作玩具, 是工作之餘的娛樂
2012/4/10
[ASP.NET] 自訂 Server Control 的 CSS3 屬性
ASP.NET 到底有沒有支援 CSS3? 嚴格地說, 既然我們可以在 ASP.NET 專案及網頁中毫無障礙地自訂 Style, 那麼它當然有支援 CSS3。雖然在 Visual Studio 的 IDE 裡面, 或許它不能識別 CSS3 的 tag, 也不提供 intellisense, 但是那並不是 ASP.NET 的問題。
其實, 就像 ASP.NET Control 既有的 Font, ForeColor, Height, Width... 一樣, 這些屬性也都可以使用 CSS Style 來設定, 但是在 ASP.NET 中仍然把它們特別拉出來實作為屬性。在本文中, 我要做的就是同樣的事情。
2011/1/5
2010/4/5
萬眾矚目的 HTML 5
如果我們回顧一下 HTML 的歷史,HTML 4 是在 1997 年底制訂的,我們現在普遍使用的 HTML 4.01 發表於 1999 年底。此外,XHTML 1.0 發表於 2000 年初,XHTML 1.1 則發表於 2001 年中。距今差不多十幾年的時間當中,我們並沒有看到太多革命性的改變。
不過,現在我們終於可以看到 HTML 5 正在制定中,而且各種瀏覽器都已經開始支援,包括 IE 9/10、Chrome、FireFox、Opera 等等。
HTML 5 的前身稱為 Web Application 1.0,早在 2004 年中就已經開始制定規格。其原先的目的在於消除網路使用者對於所謂 RIA 工具 (例如 Adobe Flash, Microsoft Silverlight 等) 的依賴,不過現在交由 W3C 接手制定規格後,HTML 5 儼然已成為下一世代網頁標準的正式接班人。