隨著 VS 2012與 .NET 4.5上市,內建 MVC 4。
******************************
本範例僅限用在 VS 2012上面 (ASP.NET MVC 4)
VS 2008 SP1~2010 + MVC 1.0/2.0 不適合使用本範例
******************************
書本與先前的操作步驟,大致OK。
但有些細節需要修改。
本範例有版本限制,請注意!
******************************************************
本範例 僅 限用在 VS 2012上面 (ASP.NET MVC 4)
VS 2008 SP1~2010 + MVC 1.0/2.0 不適合使用本範例
******************************************************
僅提供給書本(下集)的讀者,作為補充範例
PChome 24hr
下集(第二版,黑皮書,第七刷),VB、C#雙語法
書本與先前的操作步驟,大致OK。
您可以照著書本上的操作來完成
但 /Controller目錄底下 HomeController檔案,有些細節需要修改。
********************************************************************************************
資料來源: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4
微軟官方網站的教學 ( C#語法 )
********************************************************************************************
照著書本的操作步驟(延續你以前 MVC 1.0 / 2.0的經驗),
第一次操作,您即使不看上文的細部說明,只看操作畫面(圖片)、程式碼
也能完成
因為 C#的範例,微軟已經公布
在此與大家分享的是 VB語法
請搭配書本(下集)的資料庫範例,並自行完成 .edmx檔案。
Public Class HomeController
Inherits System.Web.Mvc.Controller
'**********************************************
Private _test_db As New testEntities() '==自己加入的
'**********************************************
Function Index() As ActionResult
ViewData("Message") = "修改此範本即可開始著手進行您的 ASP.NET MVC 應用程式。"
Return View(_test_db.test) '-- 重點!!
'-- 寫成這樣也可以 return View(_test_db.test.ToList());
'-- 這一句 return需要自己修改。
End Function
Function About() As ActionResult
ViewData("Message") = "您的應用程式描述頁面。"
Return View()
End Function
Function Contact() As ActionResult
ViewData("Message") = "您的連絡頁面。"
Return View()
End Function
'==========================================================
'== 以下是自己動手寫的程式碼
'==========================================================
'*******************************************
'** 新 增 **
'*******************************************
' 第一個 Create Function,新增一筆資料的空白畫面,沒有參數
' GET: /Home/Create
Function Create() As ActionResult
Return View()
End Function
' == 第二個 Create Function,新增一筆並且回寫資料庫
' POST: /Home/Create
<HttpPost> _
Function Create(<Bind(Exclude:="id")> ByVal testToCreate As test) As ActionResult
'-- 重點!!這一行 <Bind(Exclude:="id")>很重要,把test Table裡面自動編號的id欄位,排除在外!!
Try
If Not ModelState.IsValid Then
Return View()
End If
'== 重點!! == MVC 4的寫法有更改!
If ModelState.IsValid Then
'== 重點!! == MVC 4的寫法有更改!
_test_db.Entry(testToCreate).State = EntityState.Added
_test_db.SaveChanges()
'== 以下的舊寫法也能運作。 ======================
'_test_db.test.Add(testToCreate) '-- testToCreate是上面傳來的參數
'_test_db.SaveChanges()
End If
Return RedirectToAction("Index") '--新增一筆資料以後,要重新導向回到首頁 Index.aspx
Catch
Return View()
End Try
End Function
'*******************************************
'** 編 輯 **
'*******************************************
'第一個 Edit Function,點選這一筆資料後,傳回文章的 id值。
' GET: /Home/Edit/5
Function Edit(ByVal id As Integer) As ActionResult
'== 重點!! == MVC 4的寫法有更改!
Dim u_test As test = _test_db.test.Find(id)
If u_test Is Nothing Then
Return HttpNotFound()
'-- 找不到這一筆記錄可供編輯
End If
Return View(u_test)
End Function
' == 第二個 Edit Function,修改完成,確定要在資料表裡面更新這筆資料,就會執行這一段。
' POST: /Home/Edit/5
<HttpPost> _
Function Edit(ByVal testToEdit As test) As ActionResult
Try
If ModelState.IsValid Then
'== 重點!! == MVC 4的寫法有更改!
_test_db.Entry(testToEdit).State = EntityState.Modified
_test_db.SaveChanges()
End If
Return RedirectToAction("Index") '--編輯成功後,回到首頁 Index.aspx
Catch
Return View(testToEdit)
End Try
End Function
'*******************************************
'** 主表明細(Master-Detail功能)裡面的 Detail **
'*******************************************
'主表明細(Master-Detail功能)裡面的 Detail
' GET: /Home/Details/5
Function Details(ByVal id As Integer) As ActionResult
'-- 仿造 Edit()的作法,就能完成 Details()
'-- 傳來一篇文章的編號(id)
'== 重點!! == MVC 4的寫法有更改!
Dim u_test As test = _test_db.test.Find(id)
If u_test Is Nothing Then
Return HttpNotFound()
'-- 找不到這一筆記錄可供編輯
End If
Return View(u_test)
End Function
'*******************************************
'** 刪 除 **
'*******************************************
'-- Delete Function,點選這一筆紀錄後,傳回文章的 id值。先檢視內容,確認後才刪除。
'-- GET: /Home/Delete/5
Function Delete(ByVal id As Integer) As ActionResult
'-- 仿造 Edit()與Details()的作法,就能完成 Delete()
'-- 傳來一篇文章的編號(id)
'== 重點!! == MVC 4的寫法有更改!
Dim u_test As test = _test_db.test.Find(id)
If u_test Is Nothing Then
Return HttpNotFound()
'-- 找不到這一筆記錄可供編輯
End If
Return View(u_test)
End Function
' == 第二個 Delete Function,確定要在資料表裡面刪除這筆資料,就會執行這一段。
' == 重點(1) 刪除的Function名稱需要改變。
' == 重點(2) HttpPost這裡需要改變。
<HttpPost, ActionName("Delete")> _
Function DeleteConfirm(ByVal id As Integer) As ActionResult
Try
'== 重點!! == MVC 4的寫法有更改!
Dim u_test As test = _test_db.test.Find(id)
If u_test Is Nothing Then
Return HttpNotFound()
'-- 找不到這一筆記錄可供刪除
End If
'== 重點!! == MVC 4的寫法有更改!
_test_db.test.Remove(u_test)
_test_db.SaveChanges()
Return RedirectToAction("Index") '--刪除成功後,回到首頁 Index.aspx
Catch
Return View()
End Try
End Function
End Class
建議您:
有時間的話,還是把微軟官方的這篇教學,逐字看完,
當然,務必自己動手操作一遍!
一定能學到很多東西
以上只是我個人的 "讀書心得" 與 "練習成果"
僅僅幫自己作一個學習記錄
無法 100% 保證正確
仍以微軟官方網站的教學為主。
********************************************************************************************
資料來源: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4
微軟官方網站的教學 ( C#語法 )
********************************************************************************************
相關內容已經收錄在書本裡,
微軟 MVP 的 ASP.NET 4.5 專題實務 [II]-範例應用與 4.5 新功能
【VB/C# 雙語法】
MIS2000 Lab. 周棟祥、吳進魯
- 出版商:松崗
- 出版日期:2013-08-08
- 台幣定價:
- 售價:7.6 折 $623
- 語言:繁體中文
- 頁數:1096 !!! (另有 五章 PDF電子書放在光碟內)
- ISBN:9572241729
- EAN:9789572241721
天瓏書局(網路書店):http://www.tenlong.com.tw/items/9572241729?item_id=620531
金石堂: http://www.kingstone.com.tw/book/book_page.asp?kmcode=2013120254701&lid=search&actid=wise
博客來: http://www.books.com.tw/exep/prod/booksfile.php?item=0010596472
2013/8/12補充:官方網站已經出現 MVC 5 的入門文章囉
http://www.asp.net/mvc/tutorials/mvc-5/introduction/getting-started
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----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.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。