1、MVC中的TempData\ViewBag\ViewData區別? 答:頁面對象傳值,有這三種對象可以傳。 Temp:臨時的 Bag:袋子 (1) TempData 保存在Session中,Controller每次執行請求的時候,會從Session中先獲取 TempData,而後清除Sessio ...
1、MVC中的TempData\ViewBag\ViewData區別?
答:頁面對象傳值,有這三種對象可以傳。
Temp:臨時的
Bag:袋子
(1) TempData 保存在Session中,Controller每次執行請求的時候,會從Session中先獲取 TempData,而後清除Session,獲取完TempData數據,雖然保存在內部字典對象中,但是其集合中的每個條目訪問一次後就從字典表中刪 除。具體代碼層面,TempData獲取過程是通過SessionStateTempDataProvider.LoadTempData方法從 ControllerContext的Session中讀取數據,而後清除Session,故TempData只能跨Controller傳遞一次。
(2) ViewBag和ViewData只在當前Action中有效,等同於View
(3)ViewData和ViewBag 中的值可以互相訪問,因為ViewBag的實現中包含了ViewData
2、ASP.NET和ASP.NET MVC的關係
答:
ASP.NET MVC是ASP.NET的子集
從mvc的核心命名空間System.Web.Mvc就能看出,因為System.Web是Asp.NET的核心命名空間。
ASP.NET MVC是在核心ASP.NET基礎之上構建的。
具體體現在以下方面
(1)ASP.NET MVC依賴於HttpHandler
關於請求是怎麼進入控制器的,其實就是用到了HttpHandler
(2)Session、Cookie、Cache和Application這些ASP.NET的對象保存機制在MVC中依然是需要用到的
(3)HttpContext、Request、Response、Server對象在MVC中仍然可以使用,在Controller中通過智能感知的形式很容易得到這些對象
3、闡述下MVC框架的機制,各個模塊的作用?
答:
我們來瞭解MVC的三大組件(模型、視圖、控制器)。 所謂模型,就是MVC需要提供的數據源,負責數據的訪問和維護。 所謂視圖,就是用於顯示模型中數據的用戶界面。 所謂控制器,就是用來處理用戶的輸入,負責改變模型的狀態並選擇適當的視圖來顯示模型的數據。 以下是我繪製的MVC三大組件之間的交互圖。 從交互圖中可以看出,MVC從用戶發送請求到頁面呈現結果大致經歷了五個步驟,分別如下: (1). 用戶在瀏覽器輸入地址,向頁面發送請求(實則是向控制器發出相關命令); (2). 控制器接受命令後,向模型請求獲得相關的數據; (3). 模型將相應的數據返回給控制器; (4). 控制器將相關數據發送到指定的視圖; (5). 指定的視圖呈現相關的數據。 當啟動MVC網站時,用戶輸入的URL地址將首先傳遞到UrlRoutingModule模塊,該模塊將解析該URL並選擇對應的URL路由,並得到對應的IHttpContext對象來處理該URL路由。在預設情況下,該IHttpContext對象就是MvcHandler對象,通過該對象來選擇相關的控制器來處理用戶的請求。即UrlRoutingModule模塊和MvcHandler對象是MVC網站的入口點,主要實現:選擇對應的控制器,實例化控制器對象,調用控制器的相關方法。以下表格更詳細地說明頁面請求的執行過程。 總結:1、UrlRoutingModule模塊截獲請求,從路由表中得到該URL對應的RouteData
2、RouteData+URL封裝成一個IHttpContext對象
3、IHttpContext對象從RouteData中得到Controller名字,根據名字反射創建Controller對象
4、Controller對象執行對應的Action方法,並返回View()
(未完待續。。。。)