.Net MVC 框架基礎(chǔ)知識

一导匣、什么是MVC?

MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器)設(shè)計創(chuàng)建 Web 應(yīng)用程序的模式适荣。

MVC全名是Model View Controller巩步,是模型(model)-視圖(view)-控制器(controller)的縮寫峭弟, 一種軟件設(shè)計典范致开,用一種業(yè)務(wù)邏輯悼嫉、數(shù)據(jù)履怯、界面顯示分離的方法組織代碼回还,將業(yè)務(wù)邏輯聚集到一個部件里面,在改進(jìn)和個性化定制界面及用戶交互的同時叹洲,不需要重新編寫業(yè)務(wù)邏輯柠硕。MVC被獨特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結(jié)構(gòu)中运提。

Model(模型)是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分蝗柔。通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)。 View(視圖)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分民泵。通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的癣丧。 Controller(控制器)是應(yīng)用程序中處理用戶交互的部分。通痴蛔保控制器負(fù)責(zé)從視圖讀取數(shù)據(jù)胁编,控制用戶輸入厢钧,并向模型發(fā)送數(shù)據(jù)。

一-1嬉橙、認(rèn)識MVC框架的結(jié)構(gòu)

Model(模型)表示應(yīng)用程序核心(比如數(shù)據(jù)庫記錄列表)早直。 View(視圖)顯示數(shù)據(jù)(數(shù)據(jù)庫記錄)。 Controller(控制器)處理輸入(寫入數(shù)據(jù)庫記錄)市框。

MVC 模式同時提供了對 HTML莽鸿、CSS 和 JavaScript 的完全控制。

二拾给、什么是Model?(Model在MVC中所起的作用)

Model(模型)是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)兔沃。?? ? ? 所有的模型應(yīng)該放到Models目錄下?

三蒋得、什么是view?及相關(guān)知識點

View(視圖)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分。通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的乒疏。 所有的視圖文件都應(yīng)該放到Views目錄下. 如果在相應(yīng)的視圖目錄中沒有找到視圖文件,那么會尋找Views\Shared目錄下名稱相同的視圖文件 在ASPX視圖引擎中,可以使用asp服務(wù)器控件,但它的作用僅僅局限與生成html代碼,而不推薦開發(fā)人員使用asp控件的事件.因此建議開發(fā)人員手工編寫Html標(biāo)記额衙。 但是手寫Html標(biāo)記比較耗費時間,有沒有更好的解決方案?答案就是使用Html輔助方法。 Html輔助方法的作用就是通過調(diào)用C#方法的方式怕吴,快速的生成相應(yīng)的html標(biāo)記. Html輔助方法分為2大類:弱類型html輔助方法和強類型html輔助方法. 其中以For關(guān)鍵字結(jié)尾的都是強類型的輔助方法.下面的示例代碼演示了二者的調(diào)用方式窍侧,以及生成的html源碼。? ? ?? ? ?


附:常用Html輔助方法匯總


四转绷、什么是Controller?(Controller在mvc中所起的作用)

Controller(控制器)是應(yīng)用程序中處理用戶交互的部分伟件。通常控制器負(fù)責(zé)從視圖讀取數(shù)據(jù)议经,控制用戶輸入斧账,并向模型發(fā)送數(shù)據(jù)。 所有的控制器必須放到Controllers文件夾下煞肾; Controller必須為公開類咧织; 所有的控制器類名必須以Controller結(jié)尾; 所有的控制器類都應(yīng)該繼承Controller基類或?qū)崿F(xiàn)IController接口的類籍救; 在Action中return?view(),默認(rèn)會返回和Action名稱一樣的視圖文件. 在控制器類中的返回值為ActionResult的公開方法习绢,這些方法在MVC中稱為Action。

四-(1)蝙昙、Controller中的Action

Action用于響應(yīng)用戶的各種請求闪萄,比如向客戶端返回html文檔、html片段耸黑、json數(shù)據(jù)桃煎、純文本、文件等結(jié)果大刊。在ASP.NET?MVC中通過在Action(行為或操作)方法中返回ActionResult類型的對象來實現(xiàn)向客戶端響應(yīng)上面的各種結(jié)果为迈。

ActionResult類是個抽象類(抽象類無法直接被實例化). ActionResult有很多實現(xiàn)類三椿,不同的實現(xiàn)類用于響應(yīng)客戶端不同的結(jié)果。并且在Controller類中提供了大量的輔助方法,這些輔助方法可以快速的創(chuàng)建各種ActionResult. 下面是詳細(xì)介紹( ActionResult 的實現(xiàn)類)葫辐。

*ViewResult類 ViewResult類的作用是向客戶端響應(yīng)View目錄中一個視圖文件. Controller類中提供了View()方法搜锰,來快速的返回一個ViewResult類對象. 如:Return view (“index”); *ContentResult類 該類用于向客戶端返回一段文本內(nèi)容(純文本\HTML...). 在Controller類中的輔助方法為:Controller.Content(string??content);

*RedirectToRouteResult類 該類的作用是從當(dāng)前action跳轉(zhuǎn)至其他action. 在Controller類中的輔助方法為:RedirectToAction(“ActionName”,?“ControllerName”) *RedirectResult類 在服務(wù)器端從當(dāng)前Action跳轉(zhuǎn)到其他URL地址. 在Controller類中的輔助方法為:Controller.Redirect(string??url)

JsonResult類 該類用于向客戶端返回一段Json格式的字符串. 在Controller類中的輔助方法為:Controller.Json(object??data); 注意:默認(rèn)情況下mvc拒絕響應(yīng)以get方式發(fā)送的ajax請求,需要使用JsonRequestBehavior.AllowGet耿战。

*PartialViewResult類 該類的作用是向客戶端響應(yīng)Views目錄的一個分部視圖文件蛋叼。分部視圖就是只包含html片段的視圖文件. 在Controller類中的輔助方法為:Controller.PartialView();

*FilePathResult類 該類用于實現(xiàn)文件下載. 在Controller類中的輔助方法為:Controller.File(string??filePath,??string??contentType,?string??fileName);

四—(2)、如何在Action中獲取表單提交的數(shù)據(jù)?

諸如新增\修改等功能模塊,我們往往會創(chuàng)建2個名稱相同的Action:一個action用于加載新增\修改頁面;另一個action用于處理新增\修改頁面提交的表單數(shù)據(jù).那么如何區(qū)分在何時調(diào)用哪個action呢? 每種操作都對應(yīng)兩個方法重載,其中前面第一個沒有特性前綴是HTTP GET模式訪問服務(wù)器的剂陡,而第二個帶有[HttpPost] attribute的方法是使用HTTP POST方式向服務(wù)器提交數(shù)據(jù)的狈涮。   第一個GET方法用來顯示初始化的界面,并處理客戶端驗證;這時如果用戶數(shù)據(jù)有誤,就根本不會進(jìn)入第二個POST方法鸭栖。   如果JS被瀏覽器禁用,第一個GET方法只用來顯示初始化界面歌馍,客戶端驗證失效,才會進(jìn)入第二個Post方法

表單中提交的數(shù)據(jù),可以通過Action的參數(shù)進(jìn)行映射. 映射的前提條件:Html標(biāo)記的name屬性值和action中參數(shù)的名稱要一致. 下面的示例代碼演示了映射的過程(注意粉色框標(biāo)記的部分):

我們還可以有另外一種等價的寫法,就是將映射的屬性定義到一個實體類中,這樣我們就可以在action中添加該實體類型的參數(shù),參考代碼如下所示:

小結(jié):MVC三大組件的相互關(guān)系


在控制器中可以直接調(diào)用視圖和模型

在視圖中可以調(diào)用模型晕鹊。

模型不能調(diào)用視圖松却。

模型能夠限定視圖中使用的數(shù)據(jù),但視圖中使用的模型應(yīng)由控制器提供。

在視圖中可以調(diào)用控制器(通過視圖中表單的提交和點擊超鏈接的方式調(diào)用)溅话。


有產(chǎn)品需要推廣晓锻,有軟件需要定制,有開發(fā)能力的程序員們歡迎加QQ群870859459互相交流學(xué)習(xí)飞几。同時進(jìn)群的群友需要軟件相關(guān)資源共享砚哆,資源整合,可以掃描群公告二維碼或者添加博主個人微信WJH20180512加微信群(蘇州軟件開發(fā)資源整合群)屑墨。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窟社,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绪钥,更是在濱河造成了極大的恐慌灿里,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件程腹,死亡現(xiàn)場離奇詭異匣吊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寸潦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門色鸳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人见转,你說我怎么就攤上這事命雀。” “怎么了斩箫?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵吏砂,是天一觀的道長撵儿。 經(jīng)常有香客問我,道長狐血,這世上最難降的妖魔是什么淀歇? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮匈织,結(jié)果婚禮上浪默,老公的妹妹穿的比我還像新娘。我一直安慰自己缀匕,他們只是感情好纳决,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乡小,像睡著了一般岳链。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上劲件,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機(jī)與錄音约急,去河邊找鬼零远。 笑死,一個胖子當(dāng)著我的面吹牛厌蔽,可吹牛的內(nèi)容都是我干的牵辣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼奴饮,長吁一口氣:“原來是場噩夢啊……” “哼纬向!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起戴卜,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤逾条,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后投剥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體师脂,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年江锨,在試婚紗的時候發(fā)現(xiàn)自己被綠了吃警。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡啄育,死狀恐怖酌心,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挑豌,我是刑警寧澤安券,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布墩崩,位于F島的核電站,受9級特大地震影響完疫,放射性物質(zhì)發(fā)生泄漏泰鸡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一壳鹤、第九天 我趴在偏房一處隱蔽的房頂上張望盛龄。 院中可真熱鬧,春花似錦芳誓、人聲如沸余舶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匿值。三九已至,卻和暖如春赂摆,著一層夾襖步出監(jiān)牢的瞬間挟憔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工烟号, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留绊谭,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓汪拥,卻偏偏與公主長得像达传,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子迫筑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容