MVC項目中如果有公共部分的代碼就可以單獨拿出來作為控件來用(比如頭部和底部代碼)。跟ASP.NET中的ASCX實現的效果一樣,但MVC比它方便的多。
想要實現該效果,需要知道@Html.Action的用法。
@Html.Action有很多的構造方法在這里我只說一種也是經常用到的,@Html.Action("視圖","控制器")的用法。首先我先創建一個控制器DaohangController.cs再在該控制器里添加一個視圖方法RightDH,同時在Views文件夾里添加相應的cshtml頁面。這個時候就創建好了一個可以運行的RightDH頁面,
可以直接訪問(/Daohang/RightDH),看一下是否可以正常的訪問。如果可以正常的訪問,看下一步,在你想要調用的頁面調用RightDH頁面(代碼:@Html.Action("RightDH", "Daohang")),這個時候運行你調用該視圖的頁面,就會看到RightDH頁面的信息已經被調用過來了。
說到這兒我說一下_ViewStart.cshtml這個文件,在MVC里都會看到這個頁面的存在,這個是頁面是不可訪問的,但是你訪問MVC里的每個頁面的時候,程序都會先訪問_ViewStart.cshtml頁面然后才是你要訪問的頁面。這就有一個好處,一些公共的html代碼可以放到_ViewStart.cshtml文件里。
然后就是母版頁,引用了母板頁也就繼承了母板頁的所有代碼,所以你可以把寫好的頭部和底部代碼寫成控件的方式,然后在母板頁里面調用該控件(用@Html.Action調用控件),然后讓其他頁面繼承母板頁,這樣就區分開公共部分和非公共部分。也達到了代碼重用的效果。
那么怎么繼承母板頁呢,有兩個辦法:1就是在創建頁面的時候直接繼承。2.直接在頁面的頂部加上
@{
Layout = "~/Views/Shared/HeadFoot.cshtml";
}
紅色部分就是母板頁地址,在創建的頁面里的內容都會替換到母板頁里@RenderBody()的部分