摘要: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有什麼差異
*************************************************************************************************
緣起:
常見的 Model Binding 範例都需要使用 LINQ或是 EF來做
為了讓初學者更好下手,我希望用更簡易的方式入門(因此沒有用到 LINQ或是 EF)
我將沿用書本「下集」,在 [第5章 LinqDataSource控制項與DataContext]
ASP.NET 專題實務 (II):進階範例應用, 2/e https://www.tenlong.com.tw/products/9789864344420?list_name=srh
以 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
如果不刪除這些關鍵字,就會出現下列錯誤。
註解: 如果您連簡單的類別檔都不會做,可以參閱這兩篇入門文章,很淺顯
http://support.microsoft.com/kb/307368/zh-tw
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/
[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 約 140hr) 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.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。