1. 程式人生 > >asp.net mvc 3.0詳細筆記__10__建立強型別檢視

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,圖1.1)所示,當時沒有建立強型別檢視,完全是自行寫的程式碼,那麼刪除這個檔案,重新通過設定強型別的的方法做個試驗,來透徹的分析下強型別檢視的精髓。

程式碼段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/>
    }

}