iT邦幫忙

1

Model Binding入門、簡介 -- Web Form、Repository與TryUpdateModel方法

我們常在 Model Binding的範例裡面,看見一個特殊的 .TryUpdatModel()方法
您也常在很多MVC的書本與範例中,看見這個關鍵字 Repository

源自「Pro ASP.NET 4.5 in C#」書本裡面的範例,或許可以幫助您 "體會"
本範例是從書本上看到的,
即使不用MVC的朋友,也可以在實作中體會 .TryUpdateMode()的作法

Apress出版,書名「Pro ASP.NET 4.5 in C#」
http://www.apress.com/9781430242543
這本書也有VB版本,名為 Pro ASP.NET 4.5 in VB

這個範例很簡單,只有兩個畫面(採用 Web Form)
一個畫面做「輸入」
另一個畫面做「輸出」,把剛剛輸入的值呈現出來。

首先要撰寫兩個類別檔(Class)
testDB.cs -- 您把它當成一個簡單的資料表,裡面有幾個欄位
(在類別裡面,就稱為「公開屬性」吧)

testRepository.cs -- 您常在很多MVC的書本與範例中,看見這個關鍵字 Repository
(程式會在最下方的超連結中公開、也提供範例下載)

現在來寫 Web Form 畫面與程式了
第一支程式,Default_1.aspx

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>

(程式會在最下方的超連結中公開、也提供範例下載)

您可以從這個範例裡面發現:
如果您的HTML設計畫面,控制項的ID是預設的 TextBox1、TextBox2、DropDownList1
那麼這支程式完全不會運作。

如果您的控制項ID,跟一開始寫好的類別檔 testDB.cs裡面的公開屬性名稱一樣
那麼就OK了。

從上面的測試裡面,比起千言萬語.......更能讓初學者有所體會

受限於文章字數的限制
您可以到我的文章看到完整的範例、或是下載範例
http://www.dotblogs.com.tw/mis2000lab/archive/2014/12/30/model_binding_tryupdatemodel_20141230.aspx.aspx

希望對您有幫助


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
賽門
iT邦超人 1 級 ‧ 2014-12-30 23:36:14

首先,TryUpdateModel是屬於MVC的範圍,把它拿來和Webforms放在一起,不合。
要引用TryUpdateModely,就必需由System.Web.Mvc命名來引用。
在MIS2000LAB自已的文章中,我完全看不到System.Web.Mvc的引用,很懷疑這樣子的範例能Work。

我不知道MIS2000LAB從Pro ASP.NET 4.5 in C#書中那個章節的範例得到這樣子的心得,可否提示一下呢?

0
mis2000lab
iT邦好手 1 級 ‧ 2014-12-31 08:57:59

文章裡面有寫,第一章就是這個範例了

超酷!

微軟推動ONE ASP.NET (從 .NET 4.5起)
很多MVC的東西可以直接沿用到 Web Form裡面了

我也很驚訝

書裡面第二章也提到這個問題,
如同您說的:

硬要在Web Form裡面加上MVC,只是搞出不倫不類的東西罷了
書本建議:先深思熟慮以後,再來思考哪種技術比較適合

如果不是為了寫書、教課,說真的,我對這種Hybrid(混血)技術,真的避而遠之

這本書在大陸的網站可以找到前四章的試讀(PDF)
大陸書名:精通ASP.NET 4.5

有興趣的朋友可以搜尋一下 :-)

剛剛檢查一下,的確不用加入 MVC的命名空間就能用
我的版本是VS 2013 Update 4

我要留言

立即登入留言