demoshop

demo, trying to be the best_

不論是寫 MVC 或 Razor Pages 經常會使用 ViewModel 傳遞資料,享受 Model binding 的好處,但有很多的情境這建立好的 Class 只會用那麼一次,所以很多時候就會直接用參數來傳,現在可以使用 C#9 後新的 record 來簡單處理囉。

Link Tag Helper Sample Code

  • 2021-05-24
  • 4891
  • 0

Link Tag Helper 是在 .NET Core 的 MVC 與 Razor Pages 中提供的新擴充方法,用來處理使用 CDN 載入外部資源時的例外處理,可以用很優雅的方式設定外部資源載入錯誤時的備援機制,以往在 .NET Core 2.x 的時候專案範本擁有完整的範例,但升級到 3.x 後此範例就沒了,所以這篇文章主要就是記錄官方內建的範例程式碼,也順便釐清問題。

上週的 SkillTree MVC 課程進度來到了 Area 但我的 Visual Studio 2019 卻找不到建立的選項,後來經由全班學員一起測試後才知道原來在 16.4 版以後,換地方啦,所以特別寫篇文記錄一下,免得忘記。

ViewModel 的使用在 ASP.NET MVC 中是一個很重要的觀念,但是初學者很容易遇到一個問題就是「一個頁面只有一個 ViewModel 怎麼夠用」,大多數的初學者可能就直接使用 ViewData 或 ViewBag 去傳遞第二個資料物件,如果你這樣傳最直接的問題就是喪失了「內建驗證」的方便性,那究竟應該怎麼正確的處理多個 ViewModel 的問題呢?
因為太多人問了,所以 demo 決定寫一個簡單的範例來有效解決初學者的多數 ViewModel 的問題。

最終目的是完成一個頁面,同時支援「使用者註冊」與「使用者登入」的功能,現在就讓我們來一步一步的完成下去

在 demo 講 ASP.NET MVC 的課程時,我都會很早就提到網址路由(Route) 的部分,不過只是簡單的說一下預設的對應方式,因為不會自訂網址路由(Route)並不會影響整個網站的開發,頂多就是做出來以後網址有點醜而已....

但是當開發者已經進階到開始要改網址路由(Route)時,就會發現這裡面學問還真多,而本篇不是要詳細的說明基本的部分(基本說明請參考《ASP.NET MVC4網站開發美學》),只是要介紹如何藉由實做 IRouteConstraint 來自訂約束(constraints)條件,當你學會了自訂約束條件後,網址路由設定的難度就會相對簡單很多。

如果你已經開始使用了 MVC4 而且很不巧的你會使用到 IE6、7、8 那你就會踩到這個雷,demo 一直很鼓吹各位開發 MVC 的朋友要使用 MVC 內建的驗證機制來簡化整個網站表單驗證的部份,當然有雷也必須要和各位誠實稟告,今天要說的就是日期驗證的雷。

最近 VS2012 的 RC 出了相信很多衝動熱血的開發者都已經安裝了,但是舊有專案還是要維護其實可以叫客戶出錢重寫,像 demo 手上就有一些專案是 ASP.NET MVC2 的版本, VS2012 根本無法開啟,用過 VS2012 以後絕對是不會想回去 VS2010 的,所以就動手來升級 MVC2 專案到 MVC3 吧。

一般在開發共用元件時都會利用 Summary 的標記讓其他共同開發者可以明確的知道這 method 介紹或使用限制,有些專案 Leader 甚至會要求所有的 Public method 都需要標記 Summary (通常是因為要方便產生文件),自己寫的好辦,有些是使用一些 Open source 的 Class 不可能去要求對方作者寫吧,自己補的話可能也只是淪落為使用 Ghost doc 來翻,其實這是可以避開的(當然要專案成員都同意你避開)。

Uploadift 是一套基於 jQuery 和 Flash 的檔案上傳工具,提供了上傳進度以及多檔上傳的功能,畫面簡單大方是一個相當不錯的上傳套件。

這裡說的無法正常登出指的是使用了FormsAuthentication 類別 來實作的登入登出機制,並不是使用 Session 來實作的登入登出,當你在 ASP.NET MVC 使用來做登入你會發現,熟悉的 FormsAuthentication.SignOut(); 竟然會無法登出,這方面應該是屬於 ASP.NET MVC 的 Bug ,既然官方沒改那我們就繞路自己解決吧。

這標題看起來好像很猛,但是其實這種需求本身就是沒意義的需求(破解的方式太多種),但是江湖路走多了,還是會遇到這種需求為了避免花費太多時間在這種地方,所以 demo 就整理了這篇文,列出實作方法與破解方法讓遇到此需求的朋友可以明確的知道各種限制的作法與破解方法。