The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何在 ASP.NET MVC 4 專案加上 Web API 與 API 說明頁面

ASP.NET Web API 功能強大,可很便利的設計出以 REST 為風格的 API 介面 (RESTful APIs),且早與 ASP.NET MVC 專案整合在一起。但是當 API 越寫越多時,如果沒有一個好個 API 文件或程式碼範例輔助,也很有可能會演變成一場災難。這篇文章,主要是撰寫如何在一個完全沒有 ASP.NET Web API 的專案中,加入新的 ASP.NET Web API 控制器 ( ApiController ) 並自動產生 API 文件的步驟。

... 繼續閱讀 ...

ASP.NET MVC 4 在 .NET 4.0 與 .NET 4.5 的專案範本差異

昨天在【ASP.NET MVC 4 開發實戰】課程中,學員們發現了一個問題,就是在實作與測試 ASP.NET MVC 的 Routing (路由) 機制的過程中,發現有個功能有些人做得出來,有些人卻做不出來,當我前去查看時也沒立即發現問題癥結,中午休息的空檔終於找到的這個細微的差異之處,所以還是寫篇文章提醒正準備開始使用 .NET Framework 4.5 的 ASP.NET MVC 開發人員。

... 繼續閱讀 ...

ASP.NET MVC 開發心得分享 (24):擴充部分類別的建構子

在 ASP.NET MVC 使用 Entity Framework 資料庫先行開發模式 (Database-First Development) 的時候,因為所有 POCO (Plain Old CLR Object) 類別都會透過 *.tt 程式碼產生器範本自動建立,當我們想擴充資料模型時,勢必不會直接把驗證屬性直接寫在這些類別裡,而是在另一個部分類別檔案中,透過 MetadataType 屬性 (Attribute) 宣告一個 Metadata 類別 (又稱 Buddy Class)。另一方面,我們也會在資料模型的 POCO 類別的「建構子」方法中宣告屬性的預設值,但這時問題來了,如果我們在自動產生的資料模型類別中,已經宣告過「建構子」的話,那我們該如何在另一個部分類別檔案中再次「宣告」建構子呢?這就是這篇文章想要解決的難題。

... 繼續閱讀 ...

ASP.NET MVC 開發心得分享 (23):反向表列路由限制的語法

我曾經在【ASP.NET MVC 開發心得分享 (21):Routing 觀念與技巧】這篇文章中分享過幾個路由開發技巧,其中在【技巧 1:替 Routing 網址設立條件限制】的部分有示範如何透過簡單的 RegEx 規則運算式 (正則表達式) 來限制路由變數的內容規則。不過,通常你在網路上能查到的這些 路由限制 (Route Constraints) 範例,大多使用「正向表列」的方式進行比對,這的確在大部分開發情境下都是這樣用的,但在特定比較少見的開發情境下,你或許需要「反向表列」的方式來限定路由參數的比對規則,尤其是在 ASP.NET MVCASP.NET HttpHandler 混合執行的情況下,更容易遇到這樣的問題。

... 繼續閱讀 ...

如何在 .NET 4.5 的 ASP.NET MVC 4 網站使用 Scaffold 範本

各位可能曾經在 ASP.NET MVC 4 新增控制器且使用 Scaffold 範本時,遇到如下圖的錯誤訊息,這個錯誤訊息非常的奇怪,但真正令我疑惑的是,我自己在企業教學或在補習班教學的時候,在一班裡都會有 20% ~ 30% 的學員遇到,而我自己卻從來沒遇到過,所以之前都認為是「電腦出了問題」,換一台就好了,直到最近,我才真正找到原因,接下來就看我怎樣解決這個問題。

'xxx' 不是指定之 'xxx' 類別的一部分,而且無法修改 'xxx' 類別以新增 'DbSet<xxx>' 屬性 (例如,'xxx' 類別可能位於已編譯的組件中)。

... 繼續閱讀 ...

如何對 ASP.NET MVC 4 原始碼進行偵錯 (終極完整觀念版)

今天有讀者反映我的書【ASP.NET MVC 4 開發實戰】講到 如何對 ASP.NET MVC 原始碼進行偵錯 這一個技巧時,照著書操作沒有成功,我自己重新試了一次,還真的沒辦法,這才發現事情沒有想像中單純,魔鬼總在細節裡,我今天又花了 6 個小時反覆研究、測試、分析,這才終於釐清為什麼以前可以,現在卻無法對 ASP.NET MVC 4 原始碼進行偵錯的原因。因此我打算轉載書中的內容,並加以更新、補充,好讓大家能夠完整且順利的將 ASP.NET MVC 4 原始碼加入到專案之中。

※本篇文章摘錄自筆者出版的【ASP.NET MVC 4 開發實戰】一書,並且更新部分內容!

... 繼續閱讀 ...

如何在 ASP.NET MVC 4 套用 ELMAH 錯誤紀錄模組

我幾乎每次在 ASP.NET 的教學場合裡都會提到在 ASP.NET MVC 專案中安裝 ELMAH (Error Logging Modules and Handlers) 的重要性,不僅僅是在開發環境或測試環境能夠收錄完整的錯誤訊息,即便在正式運行的網站也非常適合安裝 ELMAH 錯誤記錄模組。不過,當 ASP.NET MVC 網站的 web.config 設定為 <customError mode="On" /> 的情況下,由於 ASP.NET MVC 專案預設都會套用 HandleErrorAttribute 全域動作方法 (Global Action Filter),因此網站執行過程任何的例外都會被過濾掉,若不做特殊的設定還無法透過 ELMAH 取得錯誤紀錄,本篇文章將分享如何有效率的解決這個問題。

... 繼續閱讀 ...

新書出版:〔ASP.NET MVC 4 開發實戰〕已於 12/20 上市

俗話說的好,有一就有二,無三不成禮。兩年多前出版了人生第一本書 ASP.NET MVC 2 開發實戰〕,獲得廣大開發人員的肯定與迴響,還曾經一度爬上天瓏排行榜冠軍,這些對我來說都是美好且難得的回憶。一年多前,也應邀翻譯了一本〔Windows Phone開發實戰〕書籍,還藉此提升了英文閱讀能力,也算有所收穫。今年,排除一切困難,在百忙之中抽空完成了前年這本書的改版,名為〔 ASP.NET MVC 4 開發實戰〕且已在幾天前正式出版上市,趁著這次新年四天年假,著實是看書的大好時機,大家加油! (^_^)

... 繼續閱讀 ...

ASP.NET Web API 無法輸出 Entity Framework 物件的解法

開發 ASP.NET Web API 時,如果專案使用 Entity Framework 技術的話,當 Entity 與 Entity 之間包含導覽屬性 (Navigation Property) 的話,在預設的情況下,ASP.NET Web API 在輸出 JSON 格式時,會引發一個 System.InvalidOperationException 的例外狀況,其錯誤訊息為「'ObjectContent`1' 類型無法序列化內容類型 'application/json; charset=utf-8' 的回應主體。」,若要解決這個問題,有幾個必須注意的地方,才能讓 ASP.NET Web API 正常且穩定的運作。

... 繼續閱讀 ...