demoshop

demo, trying to be the best_

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

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

工商服務

  • 2017-06-26
  • 9527
  • 0

在 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 就整理了這篇文,列出實作方法與破解方法讓遇到此需求的朋友可以明確的知道各種限制的作法與破解方法。

大家都知道在開發網頁的時候因為 Server 的數量遠不及 Client 所以經常會使用到 Cache 技巧,不管是 OutCache 或是 RunTime Cache 都是降低 Server 負載的好方式,但是你有沒有想過到底 Cache 放對東西了嗎?或是放了太多一樣的東西,如果快取用的不好不但沒有幫助到效能反而可能拖累整個 Server ,因此 demo 要推薦一個早在 2006 年就推出的好東西,它可以讓我們方便快速的看到快取的狀態和內容進而調整快取的數量與值。

有使用 ASP.NET MVC 的朋友應該會對於 TryUpdateModel 有一定的認知,他不但可以利用 Metadata 來做欄位的驗證確保資料的正確性,也可以指定更新的條件以及不更新的條件來達到萬用的功能,因為他的好用所以 demo 也是經常使用他,但是使用的時候多少會覺得每次都要指定欄位很麻煩嗎?這裡告訴大家一個小技巧,讓你的 TryUpdateModel 更順手。