ASP.Net MVC的学习
套種間作,也挺有意思的——近來學習感悟。DRP學習的同時,折騰了點以前不曾學習但是卻很多次耳聞過的東西——Asp.Net中的MVC架構模式。
一、是什么?
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實現流程和原理。
<span style="font-family:KaiTi_GB2312;"><span style="font-size:18px;"> </span><span style="font-size:14px;">public class Login_BS {public bool Login(string username, string password){if (username == "1" && password == "1"){return true;}else{return false;}}} </span></span>2)Controllers
然后在Controllers 文件夾上右鍵,添加控制器
注意:其中Controller前面部分為改控制器被調用的名稱,也就是表單提交的地方為Login
其具體代碼如下:
<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
<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"></p><p>密碼:<input type="password" name="password"></p><p><input type="submit" value="登陸"></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結果就可以出來了。
<喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPGgxPsj9oaK21LHIyP2y46O6PC9oMT4KPHA+oaGhodK7uPa63MP3z9S1xMf4sfCjus/gttSxyNPryP2y46Oso82j1qPDvNy5ucSjyr3W0KOsysfDu9PQYXNweC5jc87EvP61xKGj1eLSssrHTVZDxKPKvbyrwaax3MPitcSho9LyzqrI57n70rPD5sjnufvT0LT6wuujrL7N19TIu7D8uqzBy8LfvK2jrMTHw7S+zbK7ysdNVkPBy6Gj1NpNVkPA78Pmo6zK0828o6hWaWV3o6m5y8P7y7zS5aOs1rvKx8/Uyr7E2sjdtcTSu7j21NjM5aOsy/zX1Ly60qqyu9Kqz9TKvqOs0qrP1Mq+yrLDtMTayN2jrMirsr/Tyb/Y1sbG9yhDb250cm9sbGVyKb72tqiho9Xi0fnX7sP3z9S1xNK7uPa6w7Smvs3Kx6O6yrXP1lZpZXe6zUNvbnRyb2xsZXJztcS94vHuoaM8L3A+CjxwPqGhoaHB7dK7uPbU2tPayrXP1tStwO2jqMH3s8yjqbXEsrvNrKO6PC9wPgo8cD6hoaGhoaHSu7DjYXNweMq1z9ajujwvcD4KPHA+oaGhoaGhPGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140821/20140821104809184.png" alt="\">
而MVC則是:
保留一個問題:View是經過Controller的‘同意’和Model交互?還是View和Controller交互,而Controller和Model交互?
轉載于:https://www.cnblogs.com/rainbow70626/p/5074320.html
總結
以上是生活随笔為你收集整理的ASP.Net MVC的学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (王道408考研操作系统)第三章内存管理
- 下一篇: 简单json语句转化为map保存