實戰ASP.NET MVC #6,將範例修改成MVC 4版(Only for VS 2012/ASP.NET 4.5,下集 補充習題)

隨著 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#語法 )

********************************************************************************************

 

相關內容已經收錄在書本裡,


Xp13157

微軟 MVP 的 ASP.NET 4.5 專題實務 [II]-範例應用與 4.5 新功能

【VB/C# 雙語法】

MIS2000 Lab. 周棟祥、吳進魯

  • 出版商:松崗
  • 出版日期:2013-08-08
  • 台幣定價:
  •  
  • $820
  • 售價: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 的入門文章囉

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 約 135hr)  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.主講   事先錄好的影片,並非上課側錄!   觀看時,有如「一對一」面對面講課