我們常在 Model Binding的範例裡面,看見一個特殊的 .TryUpdatModel()方法 (不需要加入 MVC命名空間就能使用!!)
您也常在很多MVC的書本與範例中,看見這個關鍵字 Repository
源自「Pro ASP.NET 4.5 in C#」書本裡面的範例,或許可以幫助您 "體會"
上一篇文章:
Model Binding入門、簡介、初試身手 #1 -- 搭配ASP.NET Web Form (不使用EF)
Model Binding入門、簡介、初試身手 #2 -- Web Form分頁與 IQueryable (不使用EF)
我們常在 Model Binding的範例裡面,看見一個特殊的 .TryUpdatModel()方法
各位可以在其他前輩的大作中,瞭解一下裡面的含意:
本範例是從書本上看到的,
即使不用MVC的朋友,也可以在實作中體會 .TryUpdateMode()的作法
Apress出版,書名「Pro ASP.NET 4.5 in C#」
http://www.apress.com/9781430242543
簡體中文書:精通ASP.NET 4.5 (第五版) http://www.m.sanmin.com.tw/Product/Index/004686380
這本書也有VB版本,名為 Pro ASP.NET 4.5 in VB
這個範例很簡單,只有兩個畫面(採用 Web Form)
一個畫面做「輸入」
另一個畫面做「輸出」,把剛剛輸入的值呈現出來。
Youtube教學影片:https://youtu.be/P0wIZW9FOFY
===============================================================================
首先要撰寫兩個類別檔(Class)
testDB.cs -- 您把它當成一個簡單的資料表,裡面有幾個欄位(在類別裡面,就稱為「公開屬性」吧)
- t_ID,文章編號。整數。
- t_TITLE,文章標題。字串。
- t_APPROVED,文章能否發表?true or false(Boolean布林)
public int t_ID { get; set; }
public string t_TITLE { get; set; }
public bool? t_APPROVED { get; set; }
這個類別檔可以參閱:
ASP.NET MVC - 模型繫結(MODEL BINDING) 6大建議 (作者 KingKong Bruce)
testRepository.cs -- 您常在很多MVC的書本與範例中,看見這個關鍵字 Repository
private static testRepository myRepository = new testRepository();
private List myResponses = new List();
//........................................................................................
public static testRepository GetRepository()
{
return myRepository;
}
//.........................................................................................
public IEnumerable GetAllResponses()
{
return myResponses;
}
public void AddResponse(testDB userInput)
{
myResponses.Add(userInput);
}
關於 Repository,如果您想花時間知道他是做什麼的?
可以參閱這些前輩的大作:
===============================================================================
現在來寫 Web Form 畫面與程式了
第一支程式,Default_1_Input.aspx 典型的 ASP.NET ( Web Form )
後置程式碼如下:
不需要加入 MVC命名空間就能使用 .TryUpdateModel()方法!!
using System.Web.ModelBinding; // 請自己加入宣告
//******************************************
protected void Button1_Click(object sender, EventArgs e)
{
testDB rsvp = new testDB();
// TryUpdateModel是全自動的!會把HTML畫面上的表單,直接對應過來。
// 所以才會在畫面上強調:「控制項ID」最好命名跟「類別檔的公開屬性」一樣的名字。
if (TryUpdateModel(rsvp, new FormValueProvider(ModelBindingExecutionContext)))
{
testRepository.GetRepository().AddResponse(rsvp);
if (rsvp.t_APPROVED.HasValue && rsvp.t_APPROVED.Value)
{ // 下拉式選單,如果有點選、而且是true的話,執行這一區。
Label1.ForeColor = System.Drawing.Color.Blue;
Label1.Text = "恭喜,輸入成功!";
}
else
{
Label1.ForeColor = System.Drawing.Color.Red;
Label1.Text = "Sorry...暫不發表!";
}
}
}
您可以從這個範例裡面發現:
如果您的HTML設計畫面,控制項的ID是 "預設的" TextBox1、TextBox2、DropDownList1......
那麼這支程式完全 "不會" 運作。
如果您的控制項 ID,跟一開始寫好的類別檔 testDB.cs裡面的公開屬性名稱一樣
那麼就OK了。
從上面的測試裡面,比起千言萬語.......更能讓初學者有所體會
回頭看看一開始,其他前輩的說明,.TryUpdateModel()方法是不是體會多了些?
照著「做」,遠比「只是看」,學得更多!!
放在書本「ASP.NET 專題實務 II--範例應用與進階功能」第24章裡面 http://www.books.com.tw/products/0010705908
第24章 Model Binding、類別檔與Web Form
.NET 4.5起的「One ASP.NET」讓MVC功能也普及到Web Form。這一章可以讓您透過類別檔對應資料庫,搭配Web Form控制項(如GridView)做出Model Binding。全新的CallingDataMethods事件該怎麼做?網站、專案如何與類別檔專案共同開發?請看本章的說明。
範例下載:https://onedrive.live.com/?id=6F7F668080F24B20%21640&cid=6F7F668080F24B20
C#版...... WebSite2013_Repository01.rar 或是在此下載 https://onedrive.live.com/?id=6F7F668080F24B20%21682&cid=6F7F668080F24B20
VB版...... WebSite2013_Repository01_VB.rar
...................................................................................
Apress出版,書名「Pro ASP.NET 4.5 in C#」
http://www.apress.com/9781430242543
簡體中文書:精通ASP.NET 4.5 (第五版) http://www.m.sanmin.com.tw/Product/Index/004686380
這本書也有VB版本,名為 Pro ASP.NET 4.5 in VB
這個範例,只是這本書的「第一章」而已
你說這本書驚不驚人!...... OMG .......
我對這本書的介紹:
精通ASP.NET 4.5(人民郵電出版社) / Pro ASP.NET 4.5 in C# (apress)
Kevin前輩提供兩篇很棒的文章,也請您參考:
這時候,您在來做微軟網站上的範例,應該會覺得「又變得」簡單一點點
後記:
自從自己仿製出一個簡單成果以後,
以前看不懂的微軟官方網站範例,我只花一個小時就知道他在做什麼了
做中學!真的沒錯 *^_^*
這系列的教學文章很完整,但我(以前)真的看不懂
Retrieving and displaying data with model binding and web forms
http://www.asp.net/web-forms/tutorials/data-access/model-binding/retrieving-data
而且可以把範例裡面的花俏效果都取消,
簡化以後,只留下 Model Binding的東西
下一篇文章 --
Model Binding入門、簡介、初試身手 #4 -- 微軟官方網站範例(Model Binding and Web Form)
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----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.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。