日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

ASP.NET MVC5 高级编程 第3章 视图

發(fā)布時(shí)間:2025/5/22 asp.net 154 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET MVC5 高级编程 第3章 视图 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考資料《ASP.NET MVC5 高級(jí)編程》第5版

第3章 視圖

3.1 視圖的作用

視圖的職責(zé)是向用戶提供界面。

不像基于文件的框架,ASP.NET Web Forms 和PHP ,視圖本身并不被訪問(wèn),瀏覽器,并不能直接指向一個(gè)視圖并渲染它。相反視圖被控制器渲染,因?yàn)榭刂破魈峁┝虽秩舅枰臄?shù)據(jù)。

一般情況下,控制器需要向視圖提供一些信息,所以這會(huì)傳遞一個(gè)數(shù)據(jù)轉(zhuǎn)移對(duì)象,叫做模型。完成這一過(guò)程需要兩部分操作,其中一個(gè)是檢查由控制器提交的模型對(duì)象,另一個(gè)是將其內(nèi)容轉(zhuǎn)化為HTML格式。

3.2 視圖的基礎(chǔ)知識(shí)

在最簡(jiǎn)單的情況中,向控制器發(fā)送一個(gè)請(qǐng)求,控制器返還一個(gè)視圖。

3.3 理解視圖約定

eg1:約定可以重寫(xiě)

public ActionResult Index(){return View("notIndex");}

eg2:指定完全不同目錄結(jié)構(gòu)中的視圖

public ActionResult Index(){return View("~/Views/Example/Index.cshtml");}

tips

在使用這種語(yǔ)法時(shí),必須提供視圖文件的文件擴(kuò)展名

3.4 強(qiáng)類型視圖

3.4.1 ViewBag

eg1:通過(guò)重載的View 方法傳遞模型實(shí)例來(lái)指定模型

public ActionResult Index(){ var a=0;return View(a);}

告知試圖正在使用哪些類型的模型需要使用 @model 來(lái)聲明。

對(duì)于在視圖中經(jīng)常使用的名稱空間,可以在Views 目錄下的Web.config 文件中聲明。

3.4.2 理解ViewBag、ViewData 和 ViewDataDictionary

從技術(shù)角度來(lái)講,數(shù)據(jù)從控制器推送到視圖實(shí)際上是使用了一個(gè)ViewData 的ViewDataDictionary。

我們可以通過(guò)標(biāo)準(zhǔn)字典語(yǔ)法設(shè)置或讀取其中的值

ViewData["CurrentTime"]=DateTime.Now;

ViewBag 是ViewData 的動(dòng)態(tài)封裝器。它利用了dynamic 關(guān)鍵字。ViewBag.CurrentTime 等同于 ViewData["CurrentTime"]

ViewData["CurrentTime"]=DateTime.Now;

3.5 視圖模型

eg1:通過(guò)ViewBag 填充下拉列表

例一:view 層:@Html.DropDownList("ClassID")Controller 層:ViewBag.ClassID=new SelectList(cb.GetClassModels(),"ID","ClassName");例二:view 層:@Html.DropDownList("TerSystem")Controller 層:List AllFieldValue = new List();List<sys_fieldvalue> sfv = m_Dic.GetOrderByDictionarys("TerminalSystem", "", "", ref msg);if (sfv != null){for (int i = 0; i < sfv.Count(); i++){AllFieldValue.Add(new SelectListItem { Text = sfv[i].V_Text + " ", Value = sfv[i].V_Code });}}ViewBag.TerSystem = new SelectList(AllFieldValue, "Value", "Text");

3.6 添加視圖

通過(guò)視圖基架模型來(lái)構(gòu)建模型和創(chuàng)建基架視圖。

3.7 Razor 視圖引擎

3.7.1 Razor 的概念

Razor 是默認(rèn)的視圖引擎。Razor 為視圖表示提供了一種精簡(jiǎn)的語(yǔ)法,最大限度的減少了語(yǔ)法和額外的字符。

3.7.2 代碼表達(dá)式

Razor 中的核心轉(zhuǎn)化字符是"at"符號(hào)(@)。有兩種基本類型的轉(zhuǎn)換:代碼表達(dá)式和代碼塊。

3.7.3 HTML 編碼

Razor 表達(dá)式是使用HTML 自動(dòng)編碼的。

可以通過(guò)創(chuàng)建一個(gè)HtmlString 的實(shí)例或Html.Raw便捷方法來(lái)展示不編碼的HTML標(biāo)記

當(dāng)在JavaScript 中將用戶提供的值賦給變量時(shí),要使用@Ajax.JavaScriptStringEncode 方法對(duì)用戶輸入進(jìn)行編碼。

3.7.4 代碼塊

代碼塊中的語(yǔ)句(如foreach和if)是不需要使用花括號(hào)的

可以通過(guò)創(chuàng)建一個(gè)HtmlString 的實(shí)例或Html.Raw便捷方法來(lái)展示不編碼的HTML標(biāo)記

3.7.5 Razor 語(yǔ)法示例

1,隱式代碼表達(dá)式

@model.message

2,顯式代碼表達(dá)式

@(model.message)

3,無(wú)編碼代碼表達(dá)式

html.raw

4,代碼塊

@{}

5,文本與標(biāo)記相結(jié)合

@{<@(model.message)>}

6,混合代碼與純文本

@if(1>0){<@(model.message)>}

7,轉(zhuǎn)義代碼分割符

@@

8,服務(wù)器端的注釋

@*{<@(model.message)>}*@

9,調(diào)用泛型方法

3.7.6 布局

Razor 視圖有助于使應(yīng)用程序中的多個(gè)視圖表示一致的外觀。

可使用布局為網(wǎng)站定義公共模板。公共模板包括一個(gè)或多個(gè)占位符,應(yīng)用程序中的其它視圖為它提供內(nèi)容。

視圖中的@RenderBody 調(diào)用表示一個(gè)占位符,用來(lái)標(biāo)記這個(gè)布局的視圖將渲染它們的主要內(nèi)容的位置。

視圖中可能有多個(gè)RenderSection ,默認(rèn)情況下,視圖必須為布局定義的每個(gè)RenderSection 提供相應(yīng)內(nèi)容。@RenderSection("Footer")

RenderSection 方法有一個(gè)重載版本,允許制定不需要的節(jié)。@RenderSection("Footer",require:false)

判斷RenderSection 是否有定義:IsSectionDefined 方法

3.7.7 ViewStart

Views目錄下的_ViewStart.cshtml文件,指定了一個(gè)默認(rèn)布局。代碼先于任何一個(gè)視圖運(yùn)行,我們可以在它里面對(duì)共同的視圖配置進(jìn)行統(tǒng)一設(shè)置。

3.8 指定部分視圖

不渲染布局。

3.9 小結(jié)

視圖引擎用途非常有限。它們的目的是獲取從控制器傳遞給它們的參數(shù),并生成格式化的輸出。

轉(zhuǎn)載于:https://www.cnblogs.com/llchang/p/5370514.html

總結(jié)

以上是生活随笔為你收集整理的ASP.NET MVC5 高级编程 第3章 视图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。