初學ASP.NET MVC學習筆記(一)

摘要:初學ASP.NET MVC學習筆記(一)

這是我的第一篇學習筆記。

今天其實算是一個很特別的日子,對於自己有很多的新的第一次...

第一次以程式設計師應徵上工作、第一次寫學習心得、第一次看完一篇超長的英文文件(花了三個鐘頭,還抄了一堆單字!!)

不過對於自己熱愛的東西,不管花多少心力以及時間都是快樂的吧。

廢話太多,現在開始來寫我看完 "Create a Movie Database Application in 15 Minutes with ASP.NET MVC (C#)

之後的學習心得。

承襲微軟一貫的作風,推廣新技術一定要給User簡單好用的感覺。這篇教學也不例外,

整篇文章貫穿全文的重點就是利用VS2008做一個MVC架構的網站就是這麼的輕鬆,只要15分鐘。

但是相信有寫過網站的人應該都知道,如果要做出上述文章所擁有的功能,用Web Form大概只要三分鐘吧!!

那到底為什麼要用MVC架構?MVC架構到底是什麼東東呢?

維基百科-MVC

MVC其實就是一種設計模式,早在1974年就已經被提出。所以不用擔心MVC是不是新的語言,或是新的概念。

他的意義就是將程式的   模型Model(M)-檢視View(V)-控制Controller(C)三種介面分開,讓程式可以各司其職

也讓開發人員可以分工合作,以達到一個較好的開發效率。

依我學習一個星期的想法來解釋的話,就是經由Controller去抓取或利用Model內的資料,然後展示在View上面。

那有什麼好處呢?

  1. 以前在上課時,老師都說要儘量寫三層式的架構或是N層式的架構,這樣程式才好維護。但是,寫過Web Form的

    人都曉得,常常我們在一個按鈕上註冊了一個事件,就開開心心的利用ADO.NET抓資料庫內的資料,或是在類別中

    自己寫了一些方法,在事件中去呼叫。以至於分層雖然有分,但是分的很不明確。

    但是MVC架構會強制你將介面、邏輯跟控制分離(雖然說硬要寫在一起還是可以啦..),所以用MVC架構寫出來的程式

    基本上會比較好維護,分層也比較明確。

  2.  不知道大家有沒有覺得GridView雖然強大,排序編輯樣樣幫你做到好,但是有時候要他沒有資料時顯現出表頭,或是想

     要固定寬度或是套用CSS時,要一個一個去點屬性有點麻煩。但是在MVC的世界裡,只要你的HTML跟CSS夠強,想要

     View怎麼呈現,就可以自由自在的表現出來。

 

 這是我寫MVC一個星期以來對MVC的優點的看法,當然還有其他好處,等我有心得的時候再來一一的報告。

回歸文章內容,這篇文章雖說是快速上手,但是有幾樣東西不得不提。

  1. 要使用MVC架構開發,首先要灌Visual Studio 2008 並升級為SP1,然後再安裝ASP.NET MVC framework

     

  2. 範例中使用了實體資料模型(ADO.NET Entity Data Model),對於我來說算是一個陌生的東西。

     現在的資料庫主流還是關聯式資料庫,雖然簡單易懂,但對熟悉物件導向程式設計的程式設計師來說,還是有些不合

     用。因此實體資料模型就是將資料庫中的資料表轉化為類別,資料行變為類別屬性等,要手動寫Code也是可以,但微

     軟很佛心的讓我們只要跟著精靈的設定,就將資料庫轉為實體類別。

  3. 用慣了T-SQL語法的人,對於下面這段Code可能會覺得似曾相似,又有看沒有懂。
    1 var movieToEdit = (from m in _db.MovieSet
    2
    3                            where m.Id == id
    4
    5                            select m).First();
    6

               上面這段是LINQ的運算式。非常好用!!下面開始說明:

               首先,var是C#3.0 的新語法,代表為隱式型別。聽起來很難,但是其實很單純,就是當一個變數不知道型別時,用var

               這個關鍵字,他就會自動判斷變數型別,譬如說我突然傻了,不知道5的型別是int,這時候寫 var  變數名稱=5;

               就會自動的判別等號右方的型別是int,那var就代表int。比較需要注意的是,var的型別必須在初始的時候就確定,並且

               不能再改變他。

               例如: var 變數名稱;   <=這樣寫是錯的。    

               例如:var 變數名稱=5;   變數名稱="變為string";   <=這樣寫也是錯的。

               等號右邊的from m,from是LINQ運算式的開頭,m是範圍變數,可以隨便命名。in之後接的是所要查詢的資料來源

               這邊的_db指的是資料模型的實體化物件,MovieSet是資料表,where m.Id == id應該不用說明了吧,就是要搜尋該資

               料表內Id欄位等於傳進來的變數id的資料,LINQ運算式的最後,就是要select 我們當初所設定的變數m。

               我把LINQ運算式轉為用T-SQL描述讓第一次看的人比較好了解,如下(當然T-SQL是不能這樣寫的啦!!)

               select   top 1 *  from  _db.MovieSet    as   m   where  m.Id=id

               LINQ語法也是千變萬化,但是了解之後,我覺得還滿好用的。

基本上第一篇文件,只要稍微了解上面的三點,在閱讀上應該就不會有太大的困難。其中,還有一些屬性,或是View中的

Model是什麼東西,就留著之後的學習中,再慢慢的報告囉。

 

這是我的第一篇學習筆記,在編排或是敘述上可能還是有很大的進步空間。也歡迎大家的指正以及評論。

我們都是鑑往知來,踏著前人留下的知識及累積來做學習。

所以希望能藉由這樣的學習筆記,跟大家分享我這個初學者的學習心得,

也提供想學習的人用一種比較初學者的角度去研究Code。

雖然都是坐在電腦前面獨自奮鬥,但是Coding之路永遠都不孤獨。