ASP.NET MVC架構模式

來源:互聯網
上載者:User

標籤:null   複雜   密碼   asp.net   模型   events   string   ase   target   

一、是什嗎?

  MVC,即(Model-View-Controller,模型—視圖—控制器模式),和三層類似,用於表示一種軟體架構模式。在這種模式下,將系統的實現分為模型Model,視圖View,控制器Controlller。其中Model:對資料庫的操作和一般的商務邏輯。View:負責做出和使用者互動的顯示;Controller:處理Request和Response請求,是View層訪問Model層的中介。

 

二、具體實現。

 通過一個具體的例子來看MVC的具體實現

 首先:建立一個MVC 3 web應用程式

 

 

 

 PS:MVC3和MVC4,我查閱了相關的資料,自己的理解是:在整體的架構和實現上沒有太大的變化,變化的只是其中具體的一個類或者介面等變化。

 因為其大致流程是Request請求——→Controller——→Model然後返回給View進行顯示,所以從最底層開始實現。

 

1)Model

 在Model檔案夾內建立一個Login_BS類。因為只是簡單實現,所以並沒有進行對資料庫進行操作,只是瞭解MVC實現流程和原理。<喎?"/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGJyPgo8L3A+CjxwPjxwcmUgY2xhc3M9"brush:java;"> public class Login_BS { public bool Login(string username, string password) { if (username == "1" && password == "1") { return true; } else { return false; } } } 

2)Controllers 

然後在Controllers 檔案夾上右鍵,添加控制器

 

 注意:其中Controller前面部分為改控制器被調用的名稱,也就是表單提交的地方為Login

 其具體代碼如下:

123456789101112131415161718192021222324252627 <span style="font-size:18px;">   </span><span style="font-family:KaiTi_GB2312;font-size:14px;">public class LoginController : Controller    {        //        // GET: /Login/         public ActionResult Index()        {            return View();        }        [AcceptVerbs(HttpVerbs.Post)]//表單提交方式        public void index(string username, string password)        {            Models.Login_BS loginbs = new Models.Login_BS();            //username = Request.QueryString["username"];這是get方式提交擷取資料                       //password = Request.QueryString["password"];            if (loginbs.Login(username, password))            {                Response.Write("登陸成功" + username);            }            else            {                Response.Write("登入失敗" + username);            }        }     }</span><span style="font-size:18px;"></span>

然後在其中的Index()方法右鍵添加視圖

 

  之後,在View檔案夾下面,會自動多出一個Login檔案夾,在Login檔案下面,會有一個名稱為Index(添加視圖時自己取得名字)尾碼名為cshtml的檔案,這就是我們添加的控制器所對應的View視圖。添加具體的表單和控制項:

具體代碼如下:

3)View
1234567891011121314151617181920212223 <span style="font-family:KaiTi_GB2312;font-size:14px;">View視圖代碼:@{    Layout = null;}         <title>Index</title>      <div>        <form action="/Login" method="post">            <p>使用者名稱:<input type="text" name="username" data-form-un="1500271551930.9514"></p>            <p>密碼:<input type="password" name="password" data-form-pw="1500271551930.9514"></p>            <p>                <input type="submit" value="登陸" data-form-sbm="1500271551930.9514" style="pointer-events: auto;"></p>        </form>       </div></span>

 

4、自己理解

    直接運行程式,我們會發現404頁面,為什麼明明有View視圖卻不顯示?其實,這涉及到MVC模式的具體分工問題。就像在DRP中Model2模式和同學討論的那樣:嚴格 model2模式(MVC)模式下JSP直接繪製好的頁面是不存在的?因為每個需要顯示的頁面,都必須經由一個servlet進行處理之後才由jsp進行繪製出來,也就是不訪問servlet,就不會有對應的jsp繪製好的Html頁面(純屬自己的理解,如有不同意見可以交流)。回到Asp.net 中,MVC中,使用者訪問的地址並不映射到伺服器中對應的檔案,而是映射到對應Control裡對應的ActionMethod,由ActionMethod來決定返回使用者什麼樣的資訊。而把使用者訪問的地址對應到對應的Action(當然也可以是對應的檔案)的工作有路由系統完成,這其中許多複雜的處理由.net自動完成,而開發人員需要告訴.net使用者的訪問地址和對應Action的具體映射關係。我們直接運行程式,並沒有映射到對應的Action方法,因此顯示404頁面也就很正常了。
如果我們想要顯示出具體頁面。需要再地址欄中加入對應的請求存取方法Action方法就可以了,也就是我們表單提交的地址/Login結果就可以出來了。

 

 

三、對比三層:

  一個很明顯的區別:相對比與三層,MVC架構模式中,是沒有aspx.cs檔案的。這也是MVC模式極力避免的。因為如果頁面如果有代碼,就自然包含了邏輯,那麼就不是MVC了。在MVC裡面,視圖(View)顧名思義,只是顯示內容的一個載體,它自己要不要顯示,要顯示什麼內容,全部由控制器(Controller)決定。這樣最明顯的一個好處就是:實現View和Controllers的解耦。

  另一個在於實現原理(流程)的不同:

  一般aspx實現:

   

  而MVC則是:

 

 

 

   

ASP.NET 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.