Asp.Net MVC 入門


    大家好,我叫李京陽,,很高興認識大家,之所以我想開一個自己的博客,就是來把自己所了解的知識點通過自己的話寫一下,今天我開始說一下我對MVC的認識和入門基礎,明天補上Razor語法。


 

 

Asp.net MVC框架

1.區別 Asp.NetMVC框架  和  MVC設計模式。

1.1.Asp.Net Mvc框架 是微軟開發的一套新的 Web 機制;

  本來的意思是想 把以前的前后台緊密聯系的WebForm機制改變成靈活的配置方式,但是 微軟覺得 每個控制器訪問的 Model 和視圖 如果都是用配置文件的方式的話,很麻煩。所以微軟采取了一種“約定大於配置”的理念:

用戶訪問某個 控制器 里  Action方法,就會去自動加載 同名的 視圖。

缺點:不能在運行時通過配置靈活的 修改 模型和視圖的組合關系;

優點:

大量的減少了程序員的配置工作;

本身網站的業務和頁面就是配套的,很少有共用或改變的情況;

可以 允許 程序員使用 不同的 視圖引擎,從而根據不同的業務和習慣選擇不同的視圖引擎提高開發效率。

 

1.2.MVC設計模式

是一種用於將 具體顯示 與 業務 分離,並能夠通過某種方式 靈活改變的代碼設計方式。優點在於,用戶請求的 頁面 和 業務 可以靈活配置,降低了頁面呈現 和 后台業務的耦合度。

 

簡而言之:用戶請求控制器,控制器【根據配置】決定調用哪個模型來執行業務,並將返回的數據裝入 哪個 視圖,最后生成html代碼返回給用戶。

 

1.3視圖加載規則,通過mvc找不到視圖的錯誤,了解加載規則:

 

  a.先去與控制器同名的 視圖文件夾

2. Controller 獲取瀏覽器數據

2.1 Controller 接收瀏覽器數據

a.獲取Get數據 :

  a1:獲取路由url中配置好的制定參數:

  如 配置好的路由:

 

  瀏覽器請求路徑為: /User/Modify/1 ,MVC框架 獲取請求后,就會找到匹配的路由映射路徑url,得知 是請求的 控制器類 User里的 Modify 方法,此時就會檢查此方法是否包含一個 名為 id 的參數,如果有,按照配置的url 獲取“參數”{id},並傳給此方法。

 

 

  a2.直接通過請求上下文對象里的 Request獲取 url ?后的的參數:

  瀏覽器請求路徑為:/User/UserList/1?fun=jp

  控制器獲取:Request.QueryString["fun"];

 

b.獲取Post數據

  b1.通過Request.Form["name"] 逐個獲取 表單提交的數據

  b2.通過 FormCollection form逐個獲取 表單提交的數據

 

  b3.通過 實體對象 一次性獲取 表單元素的數據,並設置到 實體對象對應的屬性中

 

  表單中的表單元素的 屬性名稱 必須和 實體對象的屬性一樣!

 

  

查看源碼時,方法都沒有Region,所以都處於打開狀態,可以使用快捷鍵

折疊類中所有方法:ctrl+m+o

折疊類中所有的代碼塊,包括類:ctrl+m+l

3.控制器將處理后的數據“傳”給視圖的方式

ViewData/ViewBag/TempData/Model

其中:ViewData和ViewBag本質上都是【ViewDataDictionary】類型,並且兩者之間的數據共享,只不過提供了不同的語法操作方式而已。

 

3.1ViewData傳遞數據:

 

 

  在視圖代碼中使用 ViewData

 

3.2ViewBag傳遞數據:注意語法和ViewData不同

 

  在視圖代碼中使用ViewBag

 

 注意:與ViewData一樣,都需要在使用之前轉型!

3.3TempData 臨時數據

 

在視圖代碼中使用TempData:

 

u  查看源碼:

發現,只要從TempData中取出一個元素,就會立即將此元素移除!

 

3.4Model 強類型參數

在控制器里的Action方法最后 調用View加載視圖的時候,將 數據對象傳入。

 

視圖中,可以通過 Model屬性獲取!並且不需要轉型就可以直接使用!

 

注意:Model雖然可以不轉型就直接使用,但是 因為編譯器無法在編譯時獲取它的類型,所以就無法出現智能提示!為了解決這個問題,我們可以在試圖的最上面通過代碼指定model類型

 

使用時可以“點”出來

 

 

u  查看源碼:

當我們在試圖上添加了 @model指令時

 

當前視圖就會繼承於 WebViewPage<T> 強類型視圖頁面類,並且指定T為Student:

 

如果沒有添加@model指令:

當前視圖就會繼承於 WebViewPage<T> 強類型視圖頁面類,但T變成了 dynamic

 

 

4.MVC視圖的“秘密”

4.1其實我們的cshtml視圖頁面,在被訪問的時候,也編譯成了頁面類,

繼承於:WebViewPage<T>

 

4.2cshtml頁面里的所有的代碼,都編譯到 這個類的Excute方法里了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM