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三大組件之間的交互圖。
1、UrlRoutingModule模塊截獲請求,從路由表中得到該URL對應的RouteData
2、RouteData+URL封裝成一個IHttpContext對象
3、IHttpContext對象從RouteData中得到Controller名字,根據名字反射創建Controller對象
4、Controller對象執行對應的Action方法,並返回View()
(未完待續。。。。)