Model Binding入門、簡介、初試身手 #1 -- 搭配ASP.NET Web Form (不使用EF)

摘要:Model Binding入門、簡介、初試身手 #1 -- 搭配ASP.NET Web Form (不使用EF)

常見的 Model Binding 範例都需要使用 LINQ或是 EF來做
為了讓初學者更好下手,我希望用更簡易的方式入門(因此沒有用到 LINQ或是 EF)

 

 

Model Binding自 .NET 4.5 (VS 2012)出現以後

我看了好多篇微軟的教學文章,但一直做不出東西

(我一直相信:如果自己做不出來,那就是「零」。啥都沒有,只是空談)

 

要特別感謝 陳傳興老師 (KingKong Bruce)日前發表的一篇文章

在Web Forms專案上整合新技術,打造現代化網站

http://blogs.msdn.com/b/msdntaiwan/archive/2014/07/21/web-forms-new-technique-.aspx

這篇文章的第二部分 -- 還在用 Data Source Controls?

言簡意頦地解了我的疑惑

也提供一個簡單的程式碼片段,讓我有了一個開始。

 

開發現代化網站有個重要的觀念:關注點分離(Separation_of_concerns,SoC)。舉例來說,Web_Forms的頁面基本上都是由二支程式組成,Default.aspx與Default.aspx.cs(CodeBehind),那麼我們應盡量讓每一支程式只負責一種工作,Default.aspx負責頁面的呈現,Dafault.aspx.cs負責DAL(Data Access Layer)或BLL(Business Logic Layer)的工作。但使用Data Source Controls會使得這樣的分工難以實作。

Web Forms在.NET_Framework_4.5由ASP.NET MVC框架學習一個非常好用的機制稱為「Model Binding」,Web Forms經由Model Binding可以將原本依賴Data Source Controls的功能,轉而直接呼叫開發好的DAL或BLL的程式模組。

 

 

 

*************************************************************************************************

這裡有幾段微軟的教學影片(每段都很短),

您看過前三篇就知道 Data Binding 與 Model Binding有什麼差異

http://www.asp.net/web-forms/videos/aspnet-web-forms-vnext/aspnet-vnext-videos-strongly-typed-data-controls

*************************************************************************************************

 

 

緣起:

常見的 Model Binding 範例都需要使用 LINQ或是 EF來做

為了讓初學者更好下手,我希望用更簡易的方式入門(因此沒有用到 LINQ或是 EF)

 

我將沿用書本「下集」,在 [第5章 LinqDataSource控制項與DataContext]

ASP.NET 專題實務 (II):進階範例應用, 2/e

以 VS 2019 重新錄製本範例的教學,請看 Youtube - https://youtu.be/ph9eTOohvTU

 

YouTube 影片教學 -- https://youtu.be/IH45gV53Dzs

 

 

 

 

 

 

    5-6  Case Study -- 自己撰寫Calss作為資料來源,搭配LINQ

     裡面的一個簡單 類別檔(如下圖),來做Model Binding搭配 GridView 與 Repeater

 

這個簡單 類別檔(如下圖)的 BookList方法,C#語法原本有一個 static。請您刪除。

若是 VB語法則是 Shared。請您刪除。

註解: 

     上圖的屬性(Property),請參閱 Allen Kuo的文章 -- field , property 的差別

 

      微軟MSDN網站的說法 --
 
  • 屬性(Property)讓類別能夠在隱藏實作或驗證程式碼的同時,以公開的方式取得並設定值。
  • get 屬性存取子是用來 [傳回] 屬性值,而 set 存取子是用來 [指定] 新值。 這些存取子可能具有不同的存取層級。 
  • value 關鍵字的用途是定義由 set 存取子所指定的值。
  • (C#) 沒有實作 set 存取子的屬性就是唯讀(ReadOnly)。
 
 
 

如果不刪除這些關鍵字,就會出現下列錯誤。

 

 

註解: 如果您連簡單的類別檔都不會做,可以參閱這兩篇入門文章,很淺顯

 
 

 

或是參閱這個簡單的入門範例 -- 

[範例] 簡單搜尋引擎 (Model Binding / 類別檔入門)

 

 

.................................................................................................................................................................................

 

完成後,我們在畫面上拉一個 GridView

如下圖,多出的新屬性,例如:ItemType / SelectMethod / UpdateMethod....等等,就是為了搭配 Model Binding的

 

寫法如下,比對您的Class檔,該填哪些東西,一清二楚

 

 

重點來了!!

    大型控制項(正確名稱為:資料繫結控制項,DataBinding Controls)都有這個 CallingDataMethods事件

    您可以參考微軟MSDN的說明(可惜!沒範例)

 

      

 

 

 

第一支程式的運作結果:

 

 

如果您要修改「樣板(Template)」,下面的範例用Repeater示範

 

以前的寫法是 <%# Eval("資料表 的 欄位名稱") %>

                      <%# Bind("資料表 的 欄位名稱") %>

您必須自己記得資料表的 "每一個" 欄位名稱,寫錯可是不行的

 

 

改用 Model Binding以後,會自動出現在智慧選字(IntelliSense)

    注意!多了一個冒號

    <%#: Item.公開屬性的名稱 %>

 

 

 

下一篇文章  可以下載本範例

 

上面的範例只有介紹到查詢(取出)紀錄

如果您想撰寫 Update的方法,可以參閱這些文章。但都是使用EF來做。

http://www.intertech.com/Blog/new-strongly-typed-data-controls-in-asp-net-4-5/

http://www.bluelemoncode.com/post/2013/03/22/Super-cool-Model-Binding-functionality-in-aspnet-45.aspx

[C#.NET][ASP.NET] Model Binding in Web Form

 

 

Kevin前輩提供兩篇很棒的文章,也請您參考:

 

[Trad. Chinese] Your First ASP.NET MVC4 App(初學者入門的第一個MVC4)#2,自訂Class檔 資料模組

 

 

 

 
下一篇文章再來分享給大家 -- 

Model Binding入門、簡介、初試身手 #2 -- Web Form分頁與 IQueryable (不使用EF)

Model Binding入門、簡介、初試身手 #3 -- Web Form、Repository 與 .TryUpdateModel()方法

 

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估