一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C# MVC4頁(yè)面一些知識(shí)點(diǎn)總結(jié)說(shuō)明(值得看一看)

 Augest_Rush 2014-06-20

上一篇文章中(跟我一起學(xué)習(xí)ASP.NET 4.5 MVC4.0(一))我們基礎(chǔ)的了解了一下ASP.NET MVC4.0的一些比較簡(jiǎn)單的改變,主要是想對(duì)于MVC3.0來(lái)說(shuō)的。因?yàn)檫@一些列主要是要給ASP.NET MVC初學(xué)者,或者還沒(méi)有使用過(guò)MVC的ASP.NET開(kāi)發(fā)者進(jìn)行培訓(xùn)學(xué)習(xí),當(dāng)然也可以讓我溫習(xí)一下這種開(kāi)發(fā)模式。所以本篇不得不講解一下Razor的一些語(yǔ)法,以及在ASP.NET MVC開(kāi)發(fā)中的一些技巧和開(kāi)發(fā)方法。由于我在開(kāi)發(fā)中不喜歡使用Entity Framework,所以這里我需要解釋一下我認(rèn)為的三層架構(gòu)和MVC開(kāi)發(fā)模式的應(yīng)用。本人開(kāi)發(fā)的三層架構(gòu)中,數(shù)據(jù)庫(kù)層和邏輯層基本不變,唯一改變的是UI層換成了MVC模式開(kāi)發(fā)。當(dāng)然,模型實(shí)例如果有需要會(huì)重新寫,否則就會(huì)直接使用實(shí)體類進(jìn)行替代,這只是我個(gè)人認(rèn)識(shí)說(shuō)不定是不正確的,希望各位大師能夠多多指教。

 

首先我們來(lái)了解一下Razor的語(yǔ)法,在VS2010或者VS11中,添加一個(gè)試圖就會(huì)讓你選擇使用Razor(cshtml)還是C#(ASPX)格式。Razor在語(yǔ)法上的美化是顯而易見(jiàn)的,但是有時(shí)候會(huì)出現(xiàn)一些莫名其妙的錯(cuò)誤,但是一般都可以得到解決,要么加HTML標(biāo)簽,要么是有“()”等等都可以得到解決,這個(gè)也許是在編寫的Text Template對(duì)我們所寫的文本解析有點(diǎn)問(wèn)題而已。

 

在Razor中使用“@”來(lái)替代“<%%>”的編碼格式,當(dāng)然如果需要代碼塊,就需要用到“@{}”。在其中就可以編寫C#代碼,配合VS的只能解析,一般有過(guò)開(kāi)發(fā)經(jīng)驗(yàn)的人都可以很容易上手。如果你想了解更多的語(yǔ)法相關(guān)問(wèn)題,可以參考MVC3 Razor視圖引擎的基礎(chǔ)語(yǔ)法,下面介紹一下在MVC中很重要的幾個(gè)關(guān)鍵字,在編程過(guò)程中會(huì)經(jīng)常使用到。

 

一、@model模型定義

 使用@model關(guān)鍵字可以定義一個(gè)Action里所對(duì)應(yīng)的一個(gè)模型(經(jīng)??梢越兴麑?shí)體類),其實(shí)是對(duì)動(dòng)態(tài)變量進(jìn)行實(shí)例化,這樣就可以直接在cshtml文件中調(diào)用“Model”變量。而這個(gè)模型的實(shí)例,需要通過(guò)Controller進(jìn)行傳輸,如果沒(méi)有則“Model”將為null。

 

 模型可以是一個(gè)實(shí)體類,也可以是一個(gè)列表實(shí)例,字典對(duì)象都可以進(jìn)行定義,但是和Controller中的Action傳回來(lái)的實(shí)例一定要一樣,否則將會(huì)出現(xiàn)錯(cuò)誤。例如我們獲取用戶實(shí)例,并且在頁(yè)面上呈現(xiàn)用戶的具體信息,這樣就可以將用戶實(shí)例返回給前臺(tái)cshtml頁(yè)面,具體代碼如下。

  1 /// <summary>

復(fù)制代碼
 2         /// 獲取用戶信息。
 3         /// </summary>
 4         /// <returns>返回行為結(jié)果。</returns>
 5         public ActionResult UserInfo()
 6         {
 7             var id = Convert.ToInt32(Request.QueryString["id"] ?? "0");
 8             var user = Users.GetUser(id);
 9             return View(user);
10         }
復(fù)制代碼

只要在cshtml頁(yè)面上定義“@model User”這樣這個(gè)頁(yè)面的基本模型(Model)就是這個(gè)User類了,當(dāng)然如果不為空的時(shí)候就可以直接調(diào)用了。

 

 二、@section節(jié)點(diǎn)關(guān)鍵字

 這里首先需要了解一下布局頁(yè)面,在ASP.NET MVC中約定,以“_”開(kāi)頭的文件在瀏覽器上面是不能訪問(wèn)的,而“Shared”文件夾是一個(gè)共享的文件夾,或者叫做通用文件夾。一般不可以定義一個(gè)SharedController,這個(gè)我沒(méi)試過(guò),有興趣你可以試試。而“_viewstart.cshtml”里所指定的文件就是布局頁(yè)面,相當(dāng)于ASP.NET里的Master頁(yè)面,這樣講應(yīng)該會(huì)比較好了解。每一個(gè)布局頁(yè)都必須調(diào)用一個(gè)方法“@RenderBody()”,而這個(gè)@section就有點(diǎn)像placeholder一樣,所知名的塊名稱需要和布局頁(yè)里面定義的名稱一樣。

 

 上面就可以很清楚的看到,其中required參數(shù)表示在子頁(yè)面中是否一定要重寫,一般不需要所以設(shè)置為false。如果是true表示所有布局頁(yè)的字頁(yè)面都必須要有這個(gè)節(jié)點(diǎn)重現(xiàn)的代碼塊,在子頁(yè)面中調(diào)用可以從下面的圖中看到。

 

 由于@section header設(shè)置了required:false,所以不重寫沒(méi)關(guān)系,忽略他。節(jié)點(diǎn)一般使用“{}”包裹,而下面部分沒(méi)有指定的就是Body部分了,用好布局頁(yè)可以減少很多代碼,這個(gè)是值得推薦的。

 

三、@helper方法定義

 使用@helper關(guān)鍵字可以定義一個(gè)方法,這樣就可以在頁(yè)面中調(diào)用這個(gè)方法了,和C#中的方法一樣。在頁(yè)面中定義的方法可以訪問(wèn)ViewBag,HttpContext等等頁(yè)面的屬性,返回的類型為“HelperResult”。其他的寫法和普通的方法沒(méi)有區(qū)別,主要用于列表等等需要重復(fù)寫進(jìn)行可重復(fù)調(diào)用。

 

這個(gè)關(guān)鍵字還可以在App_Code文件夾中定義很多個(gè)方法集,我最常用的就是定義分頁(yè),比如只需要傳入記錄數(shù),每頁(yè)顯示的記錄數(shù),以及當(dāng)前頁(yè)碼和URL格式化參數(shù),就可以在頁(yè)面中很簡(jiǎn)單的呈現(xiàn)分頁(yè)內(nèi)容。之所以推薦在App_Code這個(gè)文件夾中定義,是因?yàn)榭梢允÷悦臻g,文件名就是類名,而定義的方法就可以直接使用“FileName.MethodName”格式調(diào)用,即靜態(tài)方法類。所以在這里定義的方法,不能夠使用頁(yè)面上面的ViewBag等等屬性。

 

用好了以上三個(gè)關(guān)鍵字不僅對(duì)MVC有一個(gè)深刻的認(rèn)識(shí),也可以使得提高編碼重用度。下面我再介紹一下ASP.NET MVC中文件夾結(jié)構(gòu)和MVC中的對(duì)應(yīng)關(guān)系,這個(gè)對(duì)于初學(xué)者來(lái)說(shuō)是個(gè)很大的問(wèn)題,因?yàn)槲野l(fā)現(xiàn)剛剛進(jìn)行開(kāi)發(fā)的人員找不到頁(yè)面,找到頁(yè)面又找不到控制器。借助VS11這種文件顯示結(jié)構(gòu),會(huì)更好理解,如下圖所示。

 

從上圖就可以很好的理解,Models-Views-Controllers這就組成了MVC,在Models中一般定義一些模型實(shí)體,并且會(huì)添加一些驗(yàn)證,這些模型實(shí)體類供控制器Controllers中的方法調(diào)用。在Controllers中定義的類型和Views文件夾下的文件夾名稱相對(duì)應(yīng),文件夾名加上“Controller”就是控制器名稱,這是一種命名約定就像Attribute一樣。而其中的方法當(dāng)然對(duì)于的就是Views下文件夾下的文件名了,這些都是一一對(duì)應(yīng)的。當(dāng)然有些控制器返回的如果不是試圖,可以不需要定義這些文件名,但是如果是返回試圖,就會(huì)出現(xiàn)找不到cshtml頁(yè)面的錯(cuò)誤。

 

注:控制器的這種命名約定只是對(duì)于Internet Application,對(duì)于WebAPI這個(gè)就不一樣了。 

 

昨天所寫和今天所講都是比較基礎(chǔ)的,學(xué)習(xí)都需要通過(guò)循序漸進(jìn),這樣才可以慢慢進(jìn)入正題,我希望我所寫的能夠給他人帶來(lái)一點(diǎn)收獲。我沒(méi)有整體規(guī)劃一下寫作的內(nèi)容,經(jīng)常都是想到什么寫什么,所以可能會(huì)給初學(xué)者帶來(lái)不好的感覺(jué),敬請(qǐng)?jiān)彙?

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美日韩有码一二三区 | 欧美一区日韩一区日韩一区| 日系韩系还是欧美久久| 日本 一区二区 在线| 中国少妇精品偷拍视频| 欧美中文字幕一区在线| 一区二区不卡免费观看免费| 欧美成人久久久免费播放| 麻豆视传媒短视频在线看| 日本少妇中文字幕不卡视频| 国产又粗又猛又大爽又黄同志| 激情亚洲一区国产精品久久| 亚洲精选91福利在线观看| 色哟哟精品一区二区三区| 日韩不卡一区二区视频| 九九热九九热九九热九九热| 精品国产亚洲av成人一区| 欧美一区二区三区在线播放| 国产精品一区二区三区日韩av | 最新国产欧美精品91| 沐浴偷拍一区二区视频| 精产国品一二三区麻豆| 中国美女草逼一级黄片视频| 精品人妻久久一品二品三品| 在线观看国产午夜福利| 成人精品一级特黄大片| 老鸭窝老鸭窝一区二区| 老熟女露脸一二三四区| 国产精品欧美一区二区三区不卡 | 亚洲欧美国产网爆精品| 久久精品a毛片看国产成人| 久久精品少妇内射毛片| 五月的丁香婷婷综合网| 国产精品亚洲欧美一区麻豆| 日韩av欧美中文字幕| 青青操视频在线观看国产| 国产丝袜极品黑色高跟鞋| 好吊日成人免费视频公开 | 深夜视频成人在线观看| 国产欧美另类激情久久久| 草草草草在线观看视频|