展開MVC專案中的Views,我們可以看到有三個資料夾以及兩個檔案,有趣的是原本在過去ASP.Net Web Form中耳熟能詳的Web.config檔居然也出現了它的分身在Views資料夾中。在MVC專案中,Controller的數目與Views中資料夾的數目公式為: View資料夾數=Controller數+1, 而這個額外多出來的1正是Share這個資料夾。
其實我正在很努力鋪梗就是要特別去講Share資料夾;這個資料夾中所有的View一如它資料夾的名稱一般,它們都是共享於整個MVC專案。因此,當專案開發的過程中發現到某些頁面的某部份很常出現或是常常需要被用到,為了避免無謂的重工通常會建議將這個部份放置到Share這個資料夾中。攤開Share資料夾,我們可以看到目前有三個副檔名為cshtml的檔案:
- _Layout.cshtml
- _LoginPartial.cshtml
- Error.cshtml
這個三個檔案中有前兩個檔案是以底線作為檔名的開頭,僅有第三個是完整的英文命名,其用意為何呢?
在上一章中,我曾提到過有關Controller的命名會受到限制,所有Controller都必需是Controller這幾個英文字作為結尾,同理可知,想必這裡應該也是在命名原則上作文章,是的!在View中若是以底線作為檔案名稱開頭的View,其意義就是這個View是一種Partial View!
一般View與Partial View有什麼不同呢?
我可以把它想作成:一般View是一個我們預期它為一個既完整又是最終的畫面呈現,而Partial View是畫中的某一部份。有的時候,一個View太過巨大在設計及維護上有著很高的障礙,為了避免太過複雜而讓自己陷入設計的泥淖,通常,會將一個View中的某幾個部份獨立出來成為Partial View。在本文前面所述,在專案的開發過程中,有的時候我們會發現某些頁面會有一個共同的部份,這個時候通常我們也會將其共同的部份切割出來成為一個Partial View並放置在Views/Share資料夾中共用。
從MVC3開始,ASP.Net在View上提供了一個叫作Razor的特殊引擎。這個Razor我們其實可以把它想作是一種特殊的語法用於撰寫頁面呈現邏輯。在某些時候,我們會需要將集合資料以條列式或是表格呈現在頁面上,在JavaScript中,我們需要以字串的方式組出Html語法再將其置入指定的容器中,但是在Razor中,我們可以使用像是一般撰寫程式所常用的語法來達成,以此例子來說,我們可以使用For這個語法來作到。
基本上,Razor的語法是和Html標籤混雜在一起,初期見到實在是很不習慣,但是當自己開始撰寫View時,實在是覺得妙到毫巔!
上面是_Layout.cshtml中某部份的原始碼。從原始碼中不難看出那些是Html標籤那些是Razor。其實Razor有個很容易識別的特徵,那就是它總是以@作為開頭,所以舉凡以@開頭的句子你都可以合理的懷疑這是Razor的句子。不過一個有趣的問題出現了,那就是EMail怎麼辦? EMail的格式不都是前面一串符號然後接著一個@在加上一串符號嗎?其實Razo引擎是相當聰明的,它總是能妥善的分辨出你所要表達的內容是將@當成一個一般符號抑或是一串Razor句子的開頭。 @Html.ActionLink("您標誌的位置", "Index", "Home"@Html.Partial("_LoginPartial") @RenderSection("featured", required: false)@Scripts.Render("~/bundles/jquery") @RenderSection("scripts", required: false)@RenderBody()
總結:本篇文章介紹了ASP.Net MVC中的View,並提到了撰寫View時最重要的Razor引擎,而未來的文章將會更加深入介紹Razor以及View的設計技巧。下一篇就來介紹MVC中最複雜的Model。
沒有留言:
張貼留言