首先,讓咱們來看一下如何實現一條數據的明細信息視圖。爲了更好地體會這一功能,首先咱們在前文所述的電影清單視圖(Views文件夾下面的Movies文件夾下面的Index.cshtml文件)中刪除電影清單中的種類、票價、電影等級字段,使其代碼如代碼以下所示:html
1 @model IEnumerable<MvcMovie.Models.Movie> 2 @{ 3 ViewBag.Title = "電影清單"; 4 } 5 <h2>個人電影清單</h2> 6 <p> 7 @Html.ActionLink("追加", "Create") 8 </p> 9 <table> 10 <tr> 11 <th></th> 12 <th> 13 電影名稱 14 </th> 15 <th> 16 發行日期 17 </th> 18 </tr> 19 @foreach (var item in Model) { 20 <tr> 21 <td> 22 @Html.ActionLink("編輯", "Edit", new { id=item.ID }) | 23 @Html.ActionLink("查看明細", "Details", new { id=item.ID }) | 24 @Html.ActionLink("刪除", "Delete", new { id=item.ID }) 25 </td> 26 <td> 27 @item.Title 28 </td> 29 <td> 30 @String.Format("{0:d}", item.ReleaseDate) 31 </td> 32 </tr> 33 } 34 </table>
從新運行該應用程序,在瀏覽器中輸入地址「http://localhost:xx/Movies」,瀏覽器中運行結果如圖所示:數據庫
如今電影清單畫面中就只顯示每條數據的電影名稱與發行日期了,若是像查看該條數據的詳細信息,須要點擊每條數據的「查看明細」連接,將畫面導航到明細數據畫面,在該畫面中查看這條數據的明細信息。當一條數據的細節信息比較多,而咱們只想在該數據的列舉清單中顯示該數據的幾個摘要信息,經過點擊連接或按鈕的操做來查看數據的細節信息時這種處理方法是比較有用的。接下來讓咱們來追加這個明細數據視圖。首先打開Movie控制器,追加一個返回明細數據視圖的Details方法,代碼以下所示:瀏覽器
public ActionResult Details(int id)安全
{app
Movie m = db.Movies.Find(id);ide
if (m == null)spa
return RedirectToAction("Index");3d
return View("Details", m);code
}orm
code-first經過使用Find方法來讓一條數據的尋找變得很是容易。這個方法的一個很是重要的安全特性就是咱們能夠確保咱們尋找的是一條能夠被映射爲Movie對象的數據。爲何這種作法能夠確保安全性呢?舉個例子來講,一個黑客能夠將「http://localhost:xxxx/Movies/Details/1」地址修改成「http://localhost:xxxx/Movies/Details/12345」,若是數據庫中沒有這條id爲12345的數據,根據以上代碼所示,做爲尋找結果的Movie對象將被設定爲null。瀏覽器將從新返回顯示電影清單畫面。在Details方法中點擊鼠標右鍵,選擇「添加視圖」,依然勾選「建立強類型視圖」,模型類選擇Movie,在支架模板中選擇「Details」(明細數據),如圖所示:
而後咱們看看Details.cshtml文件(明細數據視圖)中的代碼:
1 @model MvcMovie.Models.Movie 2 @{ 3 ViewBag.Title = "電影詳細信息"; 4 } 5 <h2>電影詳細信息</h2> 6 <fieldset> 7 <legend>電影</legend> 8 <div class="display-label">標題</div> 9 <div class="display-field">@Model.Title</div> 10 <div class="display-label">發行日期</div> 11 <div class="display-field">@String.Format("{0:d}", 12 Model.ReleaseDate)</div> 13 <div class="display-label">種類</div> 14 <div class="display-field">@Model.Genre</div> 15 <div class="display-label">票價</div> 16 <div class="display-field">@String.Format("{0:c2}", Model.Price)</div> 17 <div class="display-label">等級</div> 18 <div class="display-field">@Model.Rating</div> 19 </fieldset> 20 <p> 21 @Html.ActionLink("編輯", "Edit", new { id=Model.ID }) | 22 @Html.ActionLink("返回電影清單", "Index") 23 </p>
從新運行應用程序,在電影清單畫面中點擊某個電影的「查看明細」連接,瀏覽器顯示畫面如圖所示:
特別注意:上面的Movie m = db.Movies.Find(id),這個m對象被@Model接收!
下節咱們將編寫對數據庫的CRUD操做的代碼!以上是十分鐘的量,堅持每四個小時20分鐘寫代碼。