時常寫 Windows Form 程式的朋友一定知道, 我們在 Windows Form 程式中一樣可以使用 Console.Write() 方法。這些訊息可以在 Visual Studio 中的「輸出視窗」裡看見。然而, Visual Studio 本身就有許多訊息顯示在輸出視窗裡, 所以我們時常有可能漏掉某些訊息沒看到, 或者需要不停地往回捲動, 才能找到。此外, 如果你希望這些訊息是能夠讓使用者看到的, 該怎麼辦?
2014/4/21
2014/4/9
在 JSON.NET 中自動對應 JavaScript 時間
JSON.NET 可以讓我們很方便地讀寫 JSON 字串並對應到 C# 類別。在大部份的時候我們都可以直接使用 SerializeObject() 和 DeserializeObject() 方法進行轉換。但是一旦遇到 JavaScript 日期, 這招可能就行不通了。因為有些 JavaScript 開發人員會使用一種特殊的 JavaScript 日期表示法 (不是 Date 型別, 而是 Int64 型別) 來代表日期
2014/4/2
[入門] .Net 非同步處理與同步機制全解析 (二)
這一篇入門教學距離上一篇([入門] .Net 非同步處理與同步機制全解析 (一))已經有足足三年多的時間。之所以延宕那麼久, 主要是因為微軟已經開始提供平行處理及非同步機制的功能更新; 許多功能及用法不停地出現, 連我自己都搞不清楚, 所以我也沒辦法繼續著手這一系列文章。
直到 .Net Framework 4.5 開始, 我覺得應該可以算是一個適當時機, 可以繼續來寫這個系列文章了
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/27
在 Console 程式中讓文字保持在同一行顯示
我們都知道我們可以在 Console 程式中以 Console.WriteLine 和 Console.Write 輸出文字到一個命令視窗裡。但是不管是 Write 或者 WriteLine 方法, 文字的走向都是向右、向下的, 從來不會回頭。因此, 如果你的輸出文字太多, 就會需要捲頁; 如果超過差不多12頁以後, 它只會保留12頁(大約是288行左右, 根據預設值), 更上方的文字通通會被截掉, 再也看不見了。
有沒有辦法讓我們既看到輸出結果, 又能讓這些輸出的文字不要佔據那麼多空間呢?
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/5
Linq2Excel 的陷阱與處理方法
Linq2Excel 是一個非常方便好用的小工具, 它是一個 Excel 專用的 LINQ Provider, 可以讓我們很快速地讀取 Excel (包括 Excel 2013) 的試算表。我們可以直接在 Visual Studio 中透過 NuGet 取得, 目前的版本是 1.7.1。
如果你對這個套件有興趣, 你可以參考「LINQ - 實作 LinqToExcel」這篇文章, 足以讓你快速入門
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/11/12
台灣三碼郵遞區號對應程式庫
不知道是否我的查詢功力太差, 或者真的沒有人願意提供, 我在網路上找了老半天, 就是找不到一個可用的現成程式。那些現成的程式, 如果不是非 C# 語言, 就是欲言又止... 說真的, 這東西一點都不難, 只差要不要把資料打上去而已。
既然找不到, 就自己寫吧!
2013/10/27
打造動態 Enum
在 C# 中 Enum 是一個純粹靜態的結構, 當你宣告了一個 enum, 那麼它的值就固定在那裡了, 你非得去更改它的定義, 才能看到內容項目的變更。那麼, 如果我們能把它的內容項目 (包括它的值) 變成動態的呢?
在接下去之前, 我必須先把它適用的情境清楚的描述一遍, 否則大家可能無法理解為什麼要這麼做
2013/10/15
在 VS2013 以 Code First 方式建立 EF 資料庫
當你下載並安裝 Visual Studio 2013 Preview 之後, 要如何建立一個使用 Entity Framework 的專案呢? 在以下文章裡, 我要介紹一個使用 Code First 方式建立的專案。我所將描述的內容可以在以下影片中看到
2013/10/1
[ASP.NET] 動態變更 SqlDataSource 中使用的 Web.config 裡的 Connection 字串
在我目前的工作中, 環境略為有點複雜, 牽涉到開發、測試和正式環境, 而使用的資料庫伺服器也有兩到三個。如果能夠動態地切換不同環境下所使用的資料庫連線字串, 一定對工作相當有幫助。
當然, 如果我都寫 ADO.NET 指令去指定連線字串, 我自然可以動態地決定應該採用哪一個連線字串。但是, 我又不想放棄簡單易用的 GridView/FormView 搭配 SqlDataSource 的作業方式。無可誨言的, 對於那些許多很小型的資料表、很少的資料、很簡單的工作, 實在沒有什麼能比上述情境更方便處理了!
2013/9/5
.Net 程式內註解的幾個小細節
最近在編寫程式時, 注意到幾個關於程式註解的注意事項, 我把它記錄起來, 同時提供朋友們參考。
註解內要怎麼斷行? 例如以下用來註解 interface 的程式行, 你在註解中把它斷行是無效的:
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/18
[SQL] 將關聯資料彙整成單一欄位並傳回的小技巧
今天在設計 Master-Detail 顯示畫面時, 面對煩雜的關聯資料, 一時突發奇想, 然後隨口問了公司的 DBA 老大, 想請教他有沒有什麼想法, 結果竟然有解法, 而且異常的簡單! 所以就有了這一篇文章的出現。(順便說一下, 對一個沒有時間去鑽研資料庫的開發人員而言, 公司裡有位 DBA 是件蠻幸福的事情)
2013/7/11
在 VS2013 Preview 中使用 Scaffolding 快速建立 CRUD 網頁
在 VS2013 Preview 中, 我們可以透過它的 Scaffolding (支架) 功能在 MVC 專案中快速建立一整套的 CRUD 網頁, 不用寫一行程式碼。甚至, 它已經內建了 Bootstrap 框架, 這使得我們甚至不需要具備美工能力, 也能設計出比以前漂亮得多的網頁。
在 Visual Studio 建立資料庫專案
我從很久以前就對 Visual Studio 中新加入的資料庫專案範本感到很有興趣; 但是一來我並不熟資料庫, 二來工作上也用不到, 所以從來沒有真正較深入地研究它, 只有嘗試過建立幾個測試專案, 然後被搞得灰頭土臉之後, 被迫放棄。但是最近由於工作上突然有了一點變化, 讓我回頭來思考在原來的方案中加入一個資料庫專案的想法, 所以就重新把它又拿來研究一番。