asp.net mvc 3.0詳細筆記__10__建立強型別檢視
歡迎一起來學習MVC 3.0,我們在一步一個腳印的做一個MVC 3.0的專案,期間會有很多值得探索的地方。將會學到Razor,Lampda,Entity Framework,LinqC#新特性等等知識,一起加油吧!
在新增檢視時,有一個選項是關於"建立強型別檢視"(英文:Create a strongly-typed view)的。你可能會問檢視怎麼還有型別呢?這要從控制器Controller說起,Controller的Action返回的檢視View是可以帶引數的,這個引數決定檢視接收的是什麼,如果Action返回的值不明不白,叫接受的檢視怎麼能搞清楚你要做什麼?
(1)還記得檔案Views/MyHome/Index.cshtml嗎?如
程式碼段1.1:
@model IEnumerable<MyMusicStore.Models.Artist> @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2> Index</h2> <h6> My First MVC 3.0 APP</h6> @{ foreach (var ins in Model) { <span>@ins.Name</span><br/> } }
圖1.1
(2)選擇"Create a strongly-typed view",並使用預設的模板。如圖2.1
圖2.1
(2)點選"Add",生成如下程式碼。如(程式碼段2.1,圖2.1)
程式碼段2.1:
@model MyMusicStore.Models.Artist
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
圖2.1
(3)此時你會發現,利用強型別生成的和我們手動寫的有所區別。
最明顯的是第一條語句,那麼
@model MyMusicStore.Models.Artist
和
@model IEnumerable<MyMusicStore.Models.Artist>
什麼區別呢?
答:顯而易見,@model MyMusicStore.Models.Artist是一個Artist物件,而
@model IEnumerable<MyMusicStore.Models.Artist>是包含多個Artist物件的集合,那你又可能會問,為什麼不使用List<Artist>呢?我們使用IEnumerable<Artist> 是因為這樣更通用,可以允許我們在以後改變集合為任何實現 IEnumerable 介面的集合。(List實現IEnumerable介面)
(4)既然已經領會了強型別,就用最強的型別吧。再次把程式碼拷迴文件吧。
@model IEnumerable<MyMusicStore.Models.Artist>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
Index</h2>
<h6>
My First MVC 3.0 APP</h6>
@{
foreach (var ins in Model)
{
<span>@ins.Name</span><br/>
}
}