2014年9月29日 星期一

ASP.NET MVC 匯出 Excel - 讓使用者挑選要匯出的資料欄位 Part.1

這一篇會用簡單且直接的方式來處理這個「讓使用者挑選要匯出的資料欄位」功能需求,先以簡單的方式來做出這個功能,之所以會說直接則是沒有經過太多的進階處理,只有稍微使用一些技巧與方式,把這一個功能需求給做出來,之後再進而修改並做出一個比較進階的解決方法。

 


2014年9月28日 星期日

ASP.NET MVC 匯出 Excel 簡單做 - 自訂匯出 Excel 檔案的檔名

這一篇是使用「ASP.NET MVC 匯出 Excel 簡單做 - 使用 ClosedXML」的基礎,那一篇的內容是使用 ClosedXML 來完成資料的匯出 Excel 檔,但是那一篇所完成的匯出 Excel 檔案功能是無法讓使用者自行決定匯出檔案的名稱,所以這一篇要做的就是加上一個簡單的小功能,在匯出檔案之前讓使用者可以自行輸入匯出檔案的檔案名稱,如果不輸入的話,匯出的檔案名稱就會使用預設值。

 


SQL 工具介紹 - ApexSQL Complete, Refactor, Search

這幾年的專案所使用資料存取方式都已經是已使用 ORM Solution 為主,所以就比較少會去關注 T-SQL 的操作,但有時候一些專案還是會遇到需要在專案裡使用 SQL Command 的時候,因為我不是 DBA 所以比較進階的 T-SQL 操作就會相當苦手,術業有專供,我還是乖乖地寫程式好了。

而在 SSMS 裡操作 T-SQL 的時候,在 SSMS 的 2008 版本之後就有加入了 Intellisense 的功能,可以讓我們寫 T-SQL 的時候就好像在 Visual Studio 裡寫程式一樣有提示讓我們可以更方便以及快速的完成指令碼編輯,但是內建的 Intellisense 功能略嫌不足,所以有一套更加好用的輔助工具也是許多人在使用「SQL Complete - Intellisense and Code Formatter in SQL Server Management Studio」,SQL Complete 有分免費版與付費版,如果像我一樣不是專職 DBA 的開發人員,其實使用免費版就已經夠好用了,而 SQL Complete 的好用與功能介紹,可以詳閱微軟 MCP demo 與黑暗執行緒的介紹文,「SSMS 套件可以完全取代 內建 IntelliSense 的好工具 dbForge SQL Complete | demo小鋪」「SSMS Intellisense強化工具-dbForge SQL Complete - 黑暗執行緒 」。

不過這邊並不是要介紹 devart  SQL Complete,而是要來介紹三個也是相當好用的 SQL 輔助工具,重點是這三個好用的工具是免費的,所以在這裡向各位做個簡單的介紹。

 


2014年9月24日 星期三

ASP.NET MVC - 使用 RouteJs - Part.3

第一篇介紹 RouteJs 所使用的專案是我用來做練習與測試的專案,所以整個專案的架構從前端到後端都與一般大部分 ASP.NET MVC 開發者所接觸的專案內容有很大的不同,所以這邊我就用另外一個專案,是去年的一篇文章所使用的範例專案「ASP.NET MVC 資料分頁 - 使用 PagedList.Mvc:Table 的 Checkbox」,那個專案剛好就是個把 Javascript 程式碼寫在 View 裡面,這一篇文章就來說明如何在專案裡加入使用 RouteJs 並且怎麼把頁面裡的 Javascript 程式碼從 View 頁面抽離出來到 JS 檔案裡。

 


2014年9月23日 星期二

ASP.NET MVC - 使用 RouteJs - Part.2

前面第一篇已經講了 RouteJs 基本的使用方式,其實 RouteJs 的使用真的蠻簡單而且也方便,因為曾經在某個與別人共同開發的專案裡看到同事為了要讓 View 裡面的 Javascript 程式碼也能夠取得正確的路徑,可以說花了一番功夫,而做出來的方式就是先抓取目前顯示頁面的 Controller 與 Action 名稱,然後再以字串的方式組合起來,這樣的方式一旦遇到變化題就必須要再花一番功夫去把正確的路徑給組合出來,而改用 RouteJs 則是可以讓這些麻煩事給簡化不少。

這一篇將要來說明「exposeAllRoutes」這個設定值的使用。

 


2014年9月22日 星期一

ASP.NET MVC - 使用 RouteJs - Part.1

我很不喜歡在 View 頁面裡直接下 Javascript 程式碼,必須要的話,我也一定會將全部的 Javascript 程式碼擺在頁面的最下面,我相當不能夠忍受 Javascript 程式碼穿插出現在 View 的任何一個地方。

View 頁面除了 Html Tag 之外還會有 Razor Syntax,我必須說在複雜的頁面顯示邏輯下,Html Tag 與 Razor Syntax 就有可能會相當混亂,此時如果再加入 Javascript 程式碼的話,這已經不是複雜或是混亂可以來形容,如果要選個適當的形容詞,那麼我會用「惡搞」,尤其是有些開發者為了要控制某些邏輯的情況下才能夠觸發哪些前端功能時,會用 Razor Syntax 來包住 Javascript 程式碼,也就是用後端程式的邏輯來控制前端程式的有無以及能否執行,這樣搞得前後端程式邏輯在頁面裡大亂鬥,這樣的做法就好像回到十多年前開發 ASP 一般。

我在專案裡對於 View 頁面所使用的做法是將 Javascript 程式碼全部抽離,然後放到一個獨立的 Javascript 檔案裡,而且一個頁面對應一個 Javascript 檔案,不會出現 A 頁面去使用到 B 頁面的前端程式,假如有出現共用的程式,則再提取出來放在更上一層的 Javascript 檔案裡,這樣的做法就如同我們在寫後端 C# 程式一樣。

但是有很多開發者對於要將 javascript 程式碼從頁面抽離都會面臨到一個問題,那就是如何取得後端方法的路徑,在 View 頁面上可以直接使用 Url.Action() 來取得路徑,但如果是在 Javascript 檔案裡就無法使用 UrlHelper 來取得路徑,而如果是直接將路徑寫死在 Javascript 程式碼裡,就會面臨到如果網站位置、路徑有改變時所帶來的影響,另外就是有時路徑並不是如我們所想的那樣,也因為無法正確取得路徑或是難以取得正確路徑的緣故,而只能讓 javascript 程式碼繼續留在 View 頁面裡。

接下來就位各位說明如何在網站裡使用 RouteJs,讓我們可以在 Javascript 程式碼裡一樣可以使用類似 Url.Action() 的方法來取得正確的路徑。

 


2014年9月15日 星期一

ASP.NET MVC - 下拉選單的日期選擇器 @ GitHub

之前發了一連串的系列文章,雖然不是多麼厲害或是精要的內容,我還是希望大家能夠藉由這些文章來瞭解如何使用 Editor Templates 以及 Data Annotation 的應用,讓初學者或是不瞭解而亂做的人可以擺脫過往所慣用的拼裝做法,雖然如此,但是在部落格文章的瀏覽數量來看,我相當不解為何頭尾兩篇的瀏覽次數會那麼地多,而中間真正重點的 Editor Templates 的瀏覽次數卻是與頭尾兩篇不成比例的低呀,不知道是不是大家都已經知道做法,還是大家根本不想知道,因為第七篇「Validation」的內容要是沒有三四五篇的基礎也是做不出東西呀,讓我對大家瀏覽文章的行為實在是完全搞不懂呀。

我已經將這系列文章裡所使用的範例程式碼放到 GitHub 上面了,想要瞭解的朋友可以到 GitHub Repository 去瀏覽原始碼或是下載程式。

 


2014年9月12日 星期五

Visual Studio Extensions - Bing Developer Assistant

在之前的 twMVC#15 研討會由我分享的講題「開發的效能與效率」裡,其中我有分享了一個 Visual Studio 擴充功能「Bing Code Search」,這個擴充功能也是我在講課的時候都會介紹,不過這個套件的功能是蠻陽春,最主要的功能就是經由 Bing 搜尋引擎去搜尋網路上有關 Keyword 的內容,來源並不是任何的資料都抓出來,主要會是去找 MSDN 與 StackOverflow 等網站的內容,最主要目的是要作為編輯程式時的輔助功能,而不是鼓勵大家寫程式都去找網路上的資料然後複製貼上。

前不久原本 Bing Code Search 的開發團隊推出了一個新的 Visual Studio 擴充功能「Bing Developer Assistant」,這個新擴充功能就是要取代 Bing Code Search,大家可以試著去連結原本 Bing Code Search 在 Visual Studio Gallery 的連結,進去之後就會被重新導向 Bing Developer Assistant,雖然目前還是 Beta 版,但大致上的功能已經完備,至於有什麼好用以及與以往有什麼不一樣的地方呢?就繼續看下去。

 


2014年9月5日 星期五

ASP.NET MVC - 下拉選單的日期選擇器 - 年齡限制

前面七篇有關 ASP.NET MVC 的下拉選單日期選擇器已經完成了基本的功能,而現在這邊要講的是比較進階一些而且也算是另外附加的功能,有些線上的服務在做申請的時候會有年齡的限制,例如限制需要在 18 歲以上、18 ~ 65 歲之間或是不能超過 70 歲等等,ASP.NET MVC 裡的 DataAnnotation 有提供一個 RangeAttribute 類別,不過 Range 主要是針對數值型資料來進行驗證,無法針對輸入的日期資料進行驗證,所以這邊就必須要另外自行去建立一個新的 Validation Attribute 類別。

這一篇就要來說明如何讓已經完成的下拉選單日期選擇器再增加年齡限制的驗證,雖然說是年齡限制,不過也可以應用在年資、使用年限等資料的驗證。

 


提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。