Asp.Net MVC 入門

    你們好,我叫李京陽,,很高興認識你們,之因此我想開一個本身的博客,就是來把本身所瞭解的知識點經過本身的話寫一下,今天我開始說一下我對MVC的認識和入門基礎,明天補上Razor語法。html


 

 

Asp.net MVC框架

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

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

  原本的意思是想 把之前的先後臺緊密聯繫的WebForm機制改變成靈活的配置方式,可是 微軟以爲 每一個控制器訪問的 Model 和視圖 若是都是用配置文件的方式的話,很麻煩。因此微軟採起了一種「約定大於配置」的理念:程序員

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

缺點:不能在運行時經過配置靈活的 修改 模型和視圖的組合關係;瀏覽器

優勢:mvc

大量的減小了程序員的配置工做;框架

自己網站的業務和頁面就是配套的,不多有共用或改變的狀況;網站

能夠 容許 程序員使用 不一樣的 視圖引擎,從而根據不一樣的業務和習慣選擇不一樣的視圖引擎提升開發效率。url

 

1.2.MVC設計模式

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

 

簡而言之:用戶請求控制器,控制器【根據配置】決定調用哪一個模型來執行業務,並將返回的數據裝入 哪一個 視圖,最後生成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方法裏了。

 

相關文章
相關標籤/搜索