網(wǎng)站首頁 編程語言 正文
一、MVC模式簡(jiǎn)介
MVC模式是一種流行的Web應(yīng)用架構(gòu)技術(shù),它被命名為模型-視圖-控制器(Model-View-Controller)。在分離應(yīng)用程序內(nèi)部的關(guān)注點(diǎn)方面,MVC是一種強(qiáng)大而簡(jiǎn)潔的方式,尤其適合應(yīng)用在Web應(yīng)用程序中。
MVC將應(yīng)用程序的用戶界面分為三個(gè)主要部分:
- 模型:一組類,描述了要處理的數(shù)據(jù)以及修改和操作數(shù)據(jù)的業(yè)務(wù)規(guī)則。
- 視圖:定義應(yīng)用程序用戶界面的顯示方式。
- 控制器:一組類,用于處理來自用戶、整個(gè)應(yīng)用程序流以及特定應(yīng)用程序邏輯的通信。
1、MVC在Web框架中的應(yīng)用
MVC模式經(jīng)常應(yīng)用于Web程序設(shè)計(jì)中。在ASP.NET MVC中,MVC三個(gè)主要部分的定義大致如下:
- 模型:模型是描述程序設(shè)計(jì)人員感興趣問題域的一些類,這些類通常封裝存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù),以及操作這些數(shù)據(jù)和執(zhí)行特定域業(yè)務(wù)邏輯的代碼。在ASP.NET MVC中,模型就像使用了某種工具的數(shù)據(jù)訪問層(Daa Access Layer),這種工具包括實(shí)體框架(Entity Framework)或者與包含特定域邏輯的自定義代碼組合在一起的其他實(shí)體框架。
- 視圖:一個(gè)動(dòng)態(tài)生成HTML頁面的模板。
- 控制器:一個(gè)協(xié)調(diào)視圖和模型直接關(guān)系的特殊類。它響應(yīng)用戶輸入,與模型進(jìn)行對(duì)話,并決定呈現(xiàn)哪個(gè)視圖(如果有的話)。在ASP.NET MVC中,這個(gè)類文件通常以后綴名Controller表示。
2、執(zhí)行順序
在ASP.NET MVC中的執(zhí)行順序可以用下圖進(jìn)行表示,如圖所示:
其執(zhí)行順序可以描述如下:用戶在瀏覽器地址欄里面輸入要訪問的網(wǎng)址,然后發(fā)起請(qǐng)求,控制器接收網(wǎng)頁發(fā)送的請(qǐng)求,如果需要請(qǐng)求數(shù)據(jù),則先從Model里面取出數(shù)據(jù)交給控制器,然后把數(shù)據(jù)交給視圖,視圖負(fù)責(zé)展現(xiàn)數(shù)據(jù)。如果不需要請(qǐng)求數(shù)據(jù),則直接返回視圖呈現(xiàn)給用戶。
二、ASP.NET中的MVC
1、ASP.NET MVC和ASP.NET
- ASP.NET MVC是ASP.NET技術(shù)的子集。
- ASP.NET MVC在ASP.NET核心基礎(chǔ)之上構(gòu)建:
依賴于HttpHandler,如請(qǐng)求是如何進(jìn)入控制器的。
依賴于Session、Cookie、Cache、Application等狀態(tài)保持機(jī)制。
使用HttpContext、Request、Response、Server等對(duì)象。
在Controller使用智能感知很容易得到這些對(duì)象。
- .NET中編寫Web程序的一種可選方式。
2、ASP.NET MVC和WebForms
- ASP.NET MVC和WebForm都是.NET中開發(fā)Web程序的一種方式,兩者是一種并列的關(guān)系。
- WebForm的特點(diǎn):
所見即所得,開發(fā)傻瓜式:服務(wù)器端控件、事件模型、狀態(tài)管理。
借鑒了Winform的成功特色。
偏離了Web請(qǐng)求處理的原理(請(qǐng)求->處理->響應(yīng))。
- ASP.NET MVC的特點(diǎn):關(guān)注分離:
WebForm只是把一個(gè)頁面分成了前置頁面和后置代碼,分離的不夠徹底。
MVC可以把一個(gè)頁面分成Controller、View、Model三部分,分離的更徹底。
測(cè)試性強(qiáng)。可以針對(duì)Controller、View、Model單獨(dú)進(jìn)行測(cè)試。
更加接近Web請(qǐng)求處理的本質(zhì)。
三、創(chuàng)建ASP.NET MVC
下面使用Visual Studio2019創(chuàng)建一個(gè)ASP.NET MVC項(xiàng)目,其他版本的Visual Studio創(chuàng)建ASP.NET MVC步驟一致。
1、選擇文件->新建->項(xiàng)目
如下圖所示:
2、選擇.NET Framework版本的ASP.NET MVC
如下圖所示:
然后點(diǎn)擊“下一步”按鈕。
3、配置項(xiàng)目名稱和路徑
最后點(diǎn)擊“創(chuàng)建”按鈕,然后會(huì)彈出創(chuàng)建新的ASP.NET Web應(yīng)用程序?qū)υ捒颍搶?duì)話框列出了所有ASP.NET應(yīng)用程序共有的一些選項(xiàng),如下圖所示:
- 選擇模板。
- 添加框架特定的文件夾和核心引用。
- 添加單元測(cè)試。
- 配置身份驗(yàn)證。
- 添加Docker支持。
選擇模板和添加文件夾和核心引用共同起作用。模板選擇了一個(gè)起點(diǎn),然后使用框架復(fù)選框來添加對(duì)WebForms、MVC和Web API的支持。這意味著我們可以選擇一個(gè)MVC模板,然后添加Web Forms支持,或者可以選擇空模板,添加對(duì)任意框架的支持。這種功能不只在創(chuàng)建新項(xiàng)目時(shí)可以使用:任何時(shí)候都可以添加對(duì)任意框架的支持,因?yàn)榭蚣芪募A和核心引用是通過NuGet包添加的。
3.1、選擇一種應(yīng)用程序模板
下面對(duì)這些模板進(jìn)行介紹:
- 空(Empty):可以想見,空模板會(huì)建立一個(gè)空的項(xiàng)目骨架。得到的文件包括一個(gè)web.config(包含一些默認(rèn)的網(wǎng)站配置設(shè)置)和創(chuàng)建項(xiàng)目所需的幾個(gè)程序集引用,但是僅此而已。這個(gè)模板不會(huì)提供代碼,不包含JavaScript或CSS腳本文件,甚至不會(huì)提供一個(gè)靜態(tài)的HTML文件。
- Web Forms:Web Forms模板為ASP.NET Web Forms開發(fā)打下基礎(chǔ)。
- MVC:MVC模板設(shè)置一個(gè)標(biāo)準(zhǔn)的、帶幾個(gè)視圖的HomeController,配置站點(diǎn)布局,并包含一個(gè)MVC特定的HTML頁面。
- Web API:使用此模板創(chuàng)建的應(yīng)用程序同時(shí)支持MVC和Web API。包含MVC支持,部分是為了顯示API Help頁面,它們記錄了公有API簽名。
- 單頁應(yīng)用程序(Single Page Application):?jiǎn)雾搼?yīng)用程序模板創(chuàng)建的應(yīng)用程序主要通過JavaScript請(qǐng)求Web API服務(wù)驅(qū)動(dòng),而不是采用傳統(tǒng)的Web頁面請(qǐng)求/響應(yīng)周期。
3.2、測(cè)試
所有的內(nèi)置項(xiàng)目模板都有一個(gè)選項(xiàng),用來使用樣本單元測(cè)試創(chuàng)建單元測(cè)試項(xiàng)目。
推薦選中“創(chuàng)建一個(gè)單元測(cè)試項(xiàng)目”復(fù)選框
3.3、配置身份驗(yàn)證
單擊“更改”按鈕,可以打開更改身份驗(yàn)證對(duì)話框,從中可以選擇身份驗(yàn)證方法,如下圖所示:
對(duì)話框中列出了4個(gè)選項(xiàng):
- 不進(jìn)行身份驗(yàn)證:用于不需要身份驗(yàn)證的應(yīng)用程序,例如沒有管理單元的公共網(wǎng)站。
- 個(gè)人用戶賬戶:用于在本地存儲(chǔ)用戶配置文件(如在SQL Server數(shù)據(jù)庫(kù)中存儲(chǔ))的應(yīng)用程序。支持用戶名/密碼賬號(hào),以及社交認(rèn)證提供程序。
- 工作或?qū)W校賬戶:用于通過某種形式的活動(dòng)目錄(包括Azure Active Directory和Office365)進(jìn)行身份驗(yàn)證的賬戶。
- Windows身份驗(yàn)證:用于內(nèi)部網(wǎng)應(yīng)用程序。
最后點(diǎn)擊“創(chuàng)建”按鈕,完成ASP.NET MVC應(yīng)用程序的創(chuàng)建:
原文鏈接:https://www.cnblogs.com/dotnet261010/p/10894699.html
相關(guān)推薦
- 2022-06-15 python中?conda?虛擬環(huán)境管理和jupyter內(nèi)核管理_python
- 2023-08-16 數(shù)據(jù)選擇器 uni-data-checkbox,獲取value值
- 2021-12-07 Linux系統(tǒng)的修復(fù)模式(單用戶模式)_Linux
- 2023-02-23 GoLang的sync.WaitGroup與sync.Once簡(jiǎn)單使用講解_Golang
- 2022-11-25 Python執(zhí)行dos和Linux命令的方法詳解_python
- 2023-01-26 Redis中的配置文件,數(shù)據(jù)持久化,事務(wù)_Redis
- 2023-07-09 Go 數(shù)組與切片的區(qū)別
- 2024-03-06 PageHelper插件的使用
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支