麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

MVC系列學(xué)習(xí)(十六)-區(qū)域的學(xué)習(xí)

2019-11-14 16:00:18
字體:
供稿:網(wǎng)友

1.查找控制器的過程

1.1調(diào)用其他項目中的控制器

a.先到網(wǎng)站根目錄下的bin文件夾下,遍歷所有的程序集

b.找到以Controller結(jié)尾的類

c.再找出其中繼承了Controller的類

d.接著創(chuàng)建同名的對象,并調(diào)用Action方法

image

1.2當(dāng)調(diào)用同名控制器時

知道了控制器是怎么找到了,那如果bin中有兩個同名的控制器怎么辦,先看看問題

image

解決方式

a.在路由配置信息中,在遍歷控制器時,只到指定命名空間下查找
b.可以看到namespaces是一個數(shù)組,即可以指定多個命名空間,可以提高遍歷速度

image

2.找視圖的過程

2.1外部控制器,加載視圖

a.先到 請求網(wǎng)站根目錄下的 View文件夾 中找與控制器同名的視圖
b.再到 請求網(wǎng)站根目錄下的 View文件夾 中找共享文件夾中的的視圖

image

2.2知道了視圖加載,那么我們就在網(wǎng)站跟目錄下,添加一個視圖

image

2.3下面我們來改下,路由信息中的命名空間,其他都不變

結(jié)論:多個控制器共享同一個視圖,做到了控制器與視圖的分離,即業(yè)務(wù)與視圖分離

image

3.開始區(qū)域

3.1先來說說區(qū)域怎么用

在網(wǎng)站根目錄下,右擊添加區(qū)域,輸入?yún)^(qū)域名,如下我添加了兩個區(qū)域;同時也添加了兩個類庫,如下

image

3.2看看區(qū)域為我們做了什么

1.網(wǎng)站啟動的時候,最先會調(diào)用application_Start(),則在網(wǎng)站啟動的時候,就注冊了區(qū)域路由。
當(dāng)網(wǎng)站啟動的時候,首先去網(wǎng)站根目錄下的bin文件夾中,找繼承了AreaRegistration類的區(qū)域注冊類,
然后創(chuàng)建這些類的對象,并調(diào)用它的RegisterArea()方法,來完成區(qū)域路由注冊
2.然后在事件管道中,根據(jù)請求的url到靜態(tài)路由表中,查找匹配的路由
3.在第11和12事件間,調(diào)用沒vcHandler的PR()方法,在其中根據(jù) 匹配 的結(jié)果去查找相應(yīng)的控制器類

 

image

3.3開始執(zhí)行

因為路由表中注冊了區(qū)域路由,即User/{controller}/{action}/{id},那么在請求的時候,就要加上區(qū)域文件User。

因為控制器在類庫UserController中,在找程序集的時候,會根據(jù) 命名空間來找控制器類。

同時會調(diào)用Views/UserHome/Index.cshtml視圖,為了看到效果,我們在Area/User/View/UserHome下添加一個視圖。

由上面找控制器可知:

1.我們可以在區(qū)域注冊文件中,添加一個namespace,值為UserController的命名空間,或者

2.將區(qū)域注冊 文件的命名空間改成UserController的命名空間,

我選擇了第二種,為了方便,我直接把區(qū)域注冊文件拉到UserController類庫中,再直接把命名空間改掉

image

3.4為什么要用區(qū)域

我最開始,說建兩個區(qū)域,和兩個類庫,大家有沒有想到什么。沒錯,用區(qū)域的好處,就把控制器單獨的功能,獨立開來,而不是把所有的控制器擠在一塊,那會很擁擠,同時在P01MVCWeb項目中,只有視圖,我們最好把區(qū)域注冊文件,也放到與控制器同項目的地方

4.得出結(jié)論

0.瀏覽器發(fā)來請求:/User/UserHome/Index
1.網(wǎng)站啟動的時候,最先會調(diào)用Application_Start(),則在網(wǎng)站啟動的時候,就注冊了區(qū)域路由。
【當(dāng)網(wǎng)站啟動的時候,首先去網(wǎng)站根目錄下的bin文件夾中,找繼承了AreaRegistration類的區(qū)域注冊類,
然后創(chuàng)建這些類的對象,并調(diào)用它的RegisterArea()方法,來完成區(qū)域路由注冊】
2.然后在事件管道中,根據(jù)請求的url到靜態(tài)路由表中,查找匹配的路由:User/{controller}/{action}/{id}
3.在第11和12事件間,調(diào)用沒vcHandler的PR()方法,在其中根據(jù) 匹配 的結(jié)果去查找相應(yīng)的控制器類,即類UserHome.cs
3.1因為我們在注冊區(qū)域路由的時候,指定了查找的命名空間,然后找到
【不寫的話,默認是使用區(qū)域注冊類的命名空間】
4.找到控制器類后,就創(chuàng)建該類的對象,并調(diào)用它的Index方法
5.控制器指定調(diào)用的視圖,執(zhí)行View()方法返回的是 ViewResult對象
【Action方法,只是創(chuàng)建視圖對象,并沒有加載視圖】
5.1然后調(diào)用ViewResult對象的ExcuteResult()方法
5.2然后查找相應(yīng)的視圖引擎【本次使用的是Razor引擎】,并通過視圖引擎找到相應(yīng)的視圖

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产小视频一区 | 91网站免费观看 | 国产大片中文字幕在线观看 | 精品一区二区三区免费看 | 羞羞答答视频 | 亚洲综合精品 | av在线中文 | 伊人999 | 精品国产一区二区三区在线 | 特级毛片免费 | 最污网站 | 亚洲一区二区中文字幕在线观看 | a级毛片免费观看在线播放 日本aaa一级片 | 午夜小电影| 中文字幕视频在线播放 | 欧美在线观看视频一区二区 | 欧美乱淫| 成人在线观看地址 | 国产成人精品免费视频大全办公室 | 97黄色网 | 少妇的肉体的满足毛片 | 国产一区视频在线观看免费 | 嗯啊羞羞视频 | 伊人在线视频 | 黄色大片免费看 | 欧美高清第一页 | 成人福利软件 | 成人午夜精品久久久久久久3d | 久久精品一区二区三区四区五区 | 成人在线精品视频 | 国产色片在线观看 | 毛片视频大全 | 91精品最新国内在线播放 | 久久久久久久久久美女 | 粉嫩粉嫩一区二区三区在线播放 | 91精品国产777在线观看 | 红杏网站永久免费视频入口 | 在线天堂中文在线资源网 | 美女羞羞视频网站 | 欧美一级高潮片免费的 | 成人免费av在线播放 |