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   https://www.tenlong.com.tw/products/9789864344420?list_name=srh

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網站的說法 --

      屬性 http://msdn.microsoft.com/zh-tw/library/x9fsa0sw.aspx

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

      方法 http://msdn.microsoft.com/zh-tw/library/ms173114.aspx

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

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

如何:在 C# .NET 中建立類別和物件

http://support.microsoft.com/kb/307368/zh-tw

逐步解說:使用類別庫建立 Web 應用程式專案

http://msdn.microsoft.com/zh-tw/library/cc668164(v=vs.100).aspx

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

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

https://dotblogs.com.tw/mis2000lab/2015/06/12/searchengine_class_sample_20150612 

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

完成後,我們在畫面上拉一個 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前輩提供兩篇很棒的文章,也請您參考:

ASP.NET MVC 的 Model 使用 ADO.NET    http://kevintsengtw.blogspot.tw/2013/05/aspnet-mvc-model-adonet.html

ASP.NET WebForm 使用分層的 Repository 類別庫專案    http://kevintsengtw.blogspot.tw/2013/05/aspnet-webform-repository.html

 

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

https://dotblogs.com.tw/mis2000lab/2012/12/25/asp_net_first_mvc4_application_web_20121226 

 

 

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

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

https://dotblogs.com.tw/mis2000lab/2015/01/09/modelbinding_gridview_page_selectmethod

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

          https://dotblogs.com.tw/mis2000lab/2016/04/25/model_binding_tryupdatemodel_20160425

 

 

 

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

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

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

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

 

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

 (1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A 

 (2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I 

[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm  。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b  


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 MVC  => .NET Core MVC 線上教學  ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講   事先錄好的影片,並非上課側錄!   觀看時,有如「一對一」面對面講課