我們常在 Model Binding的範例裡面,看見一個特殊的 .TryUpdatModel()方法 (不需要加入 MVC命名空間就能使用!!)
您也常在很多MVC的書本與範例中,看見這個關鍵字 Repository
源自「Pro ASP.NET 4.5 in C#」書本裡面的範例,或許可以幫助您 "體會"
上一篇文章:
Model Binding入門、簡介、初試身手 #1 -- 搭配ASP.NET Web Form (不使用EF)
https://dotblogs.com.tw/mis2000lab/2014/09/11/model_binding_1_20140911
Model Binding入門、簡介、初試身手 #2 -- Web Form分頁與 IQueryable (不使用EF)
https://dotblogs.com.tw/mis2000lab/2015/01/09/modelbinding_gridview_page_selectmethod
我們常在 Model Binding的範例裡面,看見一個特殊的 .TryUpdatModel()方法
各位可以在其他前輩的大作中,瞭解一下裡面的含意:
ASP.NET MVC 使用TryUpdateModel 更新的技巧(作者 demo)
ASP.NET MVC 學習筆記 - TryUpdateModel
http://coding.anyun.tw/2011/05/15/asp-net-mvc-study-notes-tryupdatemodel/
[ASP.NET MVC][筆記] 利用 TryUpdateModel 來做資料更新 (一) (作者 Jason Yah)
https://dotblogs.com.tw/jasonyah/2013/05/10/103380
本範例是從書本上看到的,
即使不用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)
一個畫面做「輸入」
另一個畫面做「輸出」,把剛剛輸入的值呈現出來。
===============================================================================
首先要撰寫兩個類別檔(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)
http://blog.kkbruce.net/2011/10/aspnet-mvc-model-binding6.html
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,如果您想花時間知道他是做什麼的?
可以參閱這些前輩的大作:
Repository,我可能不會用你 (作者 Huan-Lin)
http://huan-lin.blogspot.com/2012/11/repository-yagni.html
[Architecture Pattern] Repository (作者 Clark)
http://www.dotblogs.com.tw/clark/archive/2012/04/29/71883.aspx
ASP.NET MVC 專案分層架構 Part.3 - 個別 Repository 的資料存取操作 (作者 Kevin Tseng,mrkt)
http://kevintsengtw.blogspot.tw/2012/11/aspnet-mvc-part3-repository.html
該文作者善意的提醒:這一系列的文章並不適合初階及中階的開發人員,如果你是程式開發的初學者或是 ASP.NET MVC 初學者,甚至是開發經驗少於兩年的開發人員,請馬上離開此篇文章。
初學ASP.NET MVC 學習筆記(六)-包裝Model (作者 lastsecret)
https://dotblogs.com.tw/lastsecret/2010/03/06/13900
===============================================================================
現在來寫 Web Form 畫面與程式了
第一支程式,Default_1_Input.aspx 典型的 ASP.NET ( Web Form )
id : <asp:TextBox ID="t_ID" runat="server"></asp:TextBox> <br />
title : <asp:TextBox ID="t_TITLE" runat="server"></asp:TextBox> <br />
approved :
<asp:DropDownList ID="t_APPROVED" runat="server">
<asp:ListItem Value="true">Yes</asp:ListItem>
<asp:ListItem Value="false">No</asp:ListItem>
</asp:DropDownList>
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit 送出" />
<asp:Label ID="Label1" runat="server"></asp:Label>
後置程式碼如下:
不需要加入 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 MVC 學習筆記 - TryUpdateModel
http://coding.anyun.tw/2011/05/15/asp-net-mvc-study-notes-tryupdatemodel/
[ASP.NET MVC][筆記] 利用 TryUpdateModel 來做資料更新 (一) (作者 Jason Yah)
https://dotblogs.com.tw/jasonyah/2013/05/10/103380
照著「做」,遠比「只是看」,學得更多!!
範例下載:
C#版...... WebSite2013_Repository01.rar
VB版...... WebSite2013_Repository01_VB.rar
這個範例,只是這本書的「第一章」而已
你說這本書驚不驚人!...... OMG .......
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
我對這本書的介紹:
精通ASP.NET 4.5(人民郵電出版社) / Pro ASP.NET 4.5 in C# (apress)
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
這時候,您在來做微軟網站上的範例,應該會覺得「又變得」簡單一點點
後記: 自從自己仿製出一個簡單成果以後,
以前看不懂的微軟官方網站範例,我只花一個小時就知道他在做什麼了
做中學!真的沒錯 *^_^*
這系列的教學文章很完整,但我(以前)真的看不懂
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)
https://dotblogs.com.tw/mis2000lab/2014/09/22/model_binding_2_microsoft_sample
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----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.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。