Net學習日記_ASP.Net_MVC_Razor_筆記

Asp.net MVC框架

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

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

原本的意思是想把之前的先後臺緊密聯繫的WebForm機制改變成靈活的配置方式,可是微軟以爲每一個控制器訪問的 Model 和視圖 若是都是用配置文件的方式的話,很麻煩。html

因此微軟採起了一種「約定大於配置」的理念:程序員

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

 

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

優勢:mvc

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

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

 

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

 

1.2.MVC設計模式

是一種用於將 具體顯示 與 業務 分離,並可以經過某種方式靈活改變的代碼設計方式。spa

優勢在於,用戶請求的 頁面 和 業務 能夠靈活配置,下降了 頁面呈現 和 後臺業務的耦合度。.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.1 ViewData傳遞數據:

 在視圖代碼中使用 ViewData

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

  在視圖代碼中使用ViewBag

 注意:與ViewData同樣,都須要在使用以前轉型!

 

3.3 TempData 臨時數據

在視圖代碼中使用TempData:

查看源碼:

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

 

3.4 Model 強類型參數

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

 

視圖中,能夠經過 Model屬性獲取!而且不須要轉型就能夠直接使用!

注意:Model雖然能夠不轉型就直接使用,可是 由於編譯器沒法在編譯時獲取它的類型,因此就沒法出現智能提示!

爲了解決這個問題,咱們能夠在試圖的最上面經過代碼指定model類型

使用時能夠「點」出來

 

  查看源碼:

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

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

若是沒有添加@model指令:

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

 

4.MVC視圖的「祕密」

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

      繼承於:WebViewPage<T>

4.2 cshtml頁面裏的全部的代碼,都編譯到 這個類的Excute方法裏了

 

5.Razor語法

5.1 Razor自動轉義< > 尖括號

     在Action方法中編寫以下代碼:

 在cshtml中輸出的結果以下:

5.2使用HtmlString來封裝字符串,就不會被Razor轉義

結果:

5.3使用System.Web.IHtmlString: @Html.Raw("<p>a</p>")

5.4在js代碼中防止轉義

 

5.5代碼塊

@{  //1.執行多行C#代碼
string s ="Hi~";
      int age =11;
}

 

@{  //2.調用無返回值方法
Html.RenderPartial("SomePartial"); }

 

 

5.6調用泛型方法,須要特殊語法:加上一對小括號:

@(Html.SayHi<string>())

 

 

5.7在C#代碼塊中直接輸出 字符串文本

@for (int i = 0; i < 5; i++)
{
    //<text>哈哈哈</text>
    @:哈哈哈
}
相關文章
相關標籤/搜索