MVC架構概述

來源:互聯網
上載者:User

標籤:mvc   架構   

            2014.11.8我們完成為時兩月的中級軟考準備,沒有多餘的時間去放鬆、娛樂,緊接著迎來了我進入提高班以來真正的一次項目實踐--高效平台。

         我做的是基礎系統,就是一個算是幕後英雄的角色吧!考試系統、評教系統需要我們的資料、同時新生入學系統由我們來維護,所以說任務艱巨而重要,這一節最重要的就是說軟體開發中的第一項內容:知識補充---MVC

          何謂MVC(Model View Controller):M是指業務模型,V是指使用者介面,C則是控制器,使用MVC的目的是將M和V的實現代碼分離,從而使同一個程式可以使用不同的表現形式。比如統計學生資料可以分別用柱狀圖、餅形圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。

         它的具體操作過程如下所示:

      

        模型(Model) “資料模型”(Model)用於封裝與應用程式的商務邏輯相關的資料以及對資料的處理方法。“模型”有對資料直接存取的權力,例如對資料庫的訪問。“模型”不依賴“視圖”和“控制器”,也就是說,模型不關心它會被如何顯示或是如何被操作。但是模型中資料的變化一般會通過一種重新整理機制被公布。為了實現這種機制,那些用於監視此模型的視圖必須事先在此模型上註冊,從而,視圖可以瞭解在資料模型上發生的改變.

     視圖(View) 視圖層能夠實現資料有目的的顯示(理論上,這不是必需的)。在視圖中一般沒有程式上的邏輯。為了實現視圖上的重新整理功能,視圖需要訪問它監視的資料模型(Model),因此應該事先在被它監視的資料那裡註冊。

     控制器(Controller) 控制器起到不同層面間的組織作用,用於控制應用程式的流程。它處理事件並作出響應。“事件”包括使用者的行為和資料模型上的改變。  

    下面用一個例子來對MVC進行解釋:

        建立一個項目如所示:


        右擊Controller檔案夾,建立一空Controller,命名為HelloWorld,將代碼改為如下:

public class HelloWorldController : Controller{     public string Index()    {        return "Hello world";    }    public string Hello()    {        return "Hello everyone";    }    public string Hello2(string name)    {        return "Hello to you " + name;    }}
           右擊添加視圖: 

         在建立的視圖中添加代碼:(結合了css+div)

@using 自動匯入程式集.Models@{    Layout = null;}<!DOCTYPE html><html><head>    <meta name="viewport" content="width=device-width" />    <title>Index</title>    <style type="text/css">        #tblist {            border: 1px solid #0094ff;            width: 600px;            margin: 10px auto;            border-collapse: collapse;        }            #tbList th, td {                border: 1px solid #0094ff;                padding: 10px;            }    </style>    <script type="text/javascript">        function del(id) {            if (confirm("您確定要刪除嗎?親~~")) {                window.location = "/home/del" + id;            }        }    </script></head><body>    <table>        <tr>            <th>id</th>            <th>標題</th>            <th>分類</th>            <th>狀態</th>            <th>時間</th>            <th>操作</th>        </tr>        <!--遍曆Action方法,設定給ViewData集合資料,產生HTML代碼-->        @foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)        {             <tr>                <td>@a.AId </td>                <td>@a.ATitle </td>                <td>@a.ACate </td>                <td>@a.AStatu </td>                <td>@a.AAddtime </td>                <td>                    <a href="javascript:del(@a.AId)">刪除</a>                    <a href="/home/modify/@a.AId">改</a>                </td>            </tr>        }    </table>    @foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)    {    }</body></html>

          接下來來實現一個基本的增刪改的功能。假設我們要對部落格的基本資料進行管理,首先需要定義一個Model類型,建立一個Model,代碼如下:

namespace HelloWorld.Models{    public class BlogArticle    {        public int ID { get; set; }        public string Title { get; set; }        public DateTime ReleaseDate { get; set; }    }    public class MovieDBContext : DbContext    {        public DbSet<movie> Movies { get; set; }    }}
        接下來,我們建立一個Movie的Controller,使用ef(EntityFramework)來存取資料,如下配置:
      

         通過EF可以動態為你建立資料庫,果Model檔案發生了變化,例如添加了一個欄位,網頁就會報錯,要解決有兩種方案,一是調用Database.SetInitializer方法來自動重建資料庫,二是手動修改資料庫表。第一種方法雖然簡單但是會導致已有的資料丟失,他會重建整個資料庫。但是在開發初期非常適合使用。在這裡先採用第一種方案。具體方法是,在model中建立一個類繼承自DropCreateDatabaseIfModelChanges類。在其中可以加上可選的初始化資料的代碼,然後在Global.asax中將這個對象註冊下。

         對於mvc的理解僅僅局限在實現上,認識還很膚淺,希望和大家交流!

MVC架構概述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.