顯示資料庫資料的資料表 (VB)
由Microsoft提供
在本教學課程中,我示範兩種方法來顯示一組資料庫記錄。 我在 HTML 資料表中顯示格式化一組資料庫記錄的兩種方法。 首先,我示範如何直接在檢視中格式化資料庫記錄。 接下來,我示範如何在格式化資料庫記錄時利用部分。
本教學課程的目標是說明如何在 ASP.NET MVC 應用程式中顯示資料庫資料的 HTML 資料表。 首先,您將瞭解如何使用 Visual Studio 中包含的 Scaffolding 工具來產生自動顯示一組記錄的檢視。 接下來,您將瞭解如何在格式化資料庫記錄時,使用部分作為範本。
建立模型類別
我們將顯示 Movies 資料庫資料表中的一組記錄。 Movies 資料庫資料表包含下列資料行:
資料行名稱 | 資料類型 | 允許 Null |
---|---|---|
Id | Int | 否 |
標題 | NVarchar (200) | 否 |
導演 | NVarchar (50) | 否 |
DateReleased | Datetime | 否 |
為了代表 ASP.NET MVC 應用程式中的 Movies 資料表,我們需要建立模型類別。 在本教學課程中,我們會使用 Microsoft Entity Framework 來建立模型類別。
注意
在本教學課程中,我們會使用 Microsoft Entity Framework。 不過,請務必瞭解您可以使用各種不同的技術,從 ASP.NET MVC 應用程式與資料庫互動,包括LINQ to SQL、NHibernate 或 ADO.NET。
請遵循下列步驟來啟動實體資料模型精靈:
- 以滑鼠右鍵按一下方案總管視窗中的 Models 資料夾,然後選取功能表選項[新增]、[新增專案]。
- 選取 [資料 ] 類別,然後選取 [ADO.NET 實體資料模型] 範本。
- 為資料模型命名 MoviesDBModel.edmx ,然後按一下 [ 新增 ] 按鈕。
按一下 [新增] 按鈕之後,[實體資料模型精靈] 會出現 (請參閱圖 1) 。 請遵循下列步驟來完成精靈:
- 在 [ 選擇模型內容] 步驟中,選取 [從資料庫產生 ] 選項。
- 在 [ 選擇您的資料連線] 步驟中,使用 MoviesDB.mdf 資料連線以及連線設定的名稱 MoviesDBEntities 。 按 [下一步] 按鈕。
- 在 [ 選擇您的資料庫物件 ] 步驟中,展開 [資料表] 節點,然後選取 Movies 資料表。 輸入命名空間 Models ,然後按一下 [ 完成] 按鈕。
圖 01: (按一下以檢視完整大小的影像) 建立LINQ to SQL類別
完成實體資料模型精靈之後,實體資料模型Designer隨即開啟。 Designer應該會顯示 Movies 實體 (請參閱圖 2) 。
圖 02:實體資料模型Designer (按一下即可檢視完整大小的影像)
我們需要在繼續之前進行一項變更。 實體資料精靈會產生名為 Movies 的模型類別,代表 Movies 資料庫資料表。 由於我們將使用 Movies 類別來代表特定電影,因此我們必須將類別的名稱修改為 Movie,而不是將影片 (單數而非複數) 。
按兩下設計工具介面上的類別名稱,並將類別的名稱從 Movies 變更為 Movies。 進行這項變更之後,按一下 [ 儲存 ] 按鈕 (磁碟片) 圖示來產生 Movie 類別。
建立電影控制器
既然我們已經有方法可以代表資料庫記錄,我們可以建立會傳回電影集合的控制器。 在 Visual Studio 方案總管 視窗中,以滑鼠右鍵按一下 Controllers 資料夾,然後選取功能表選項 [新增],控制器 (請參閱圖 3) 。
圖 03:[新增控制器] 功能表 (按一下以檢視完整大小的影像)
當 [ 新增控制器 ] 對話方塊出現時,輸入控制器名稱 MovieController (請參閱圖 4) 。 按一下 [ 新增 ] 按鈕以新增控制器。
圖 04:[新增控制器] 對話方塊 (按一下以檢視完整大小的影像)
我們需要修改 Movie 控制器所公開的 Index () 巨集指令,以便傳回資料庫記錄集。 修改控制器,使其看起來像清單 1 中的控制器。
清單 1 – Controllers\MovieController.vb
Public Class MovieController
Inherits System.Web.Mvc.Controller
'
' GET: /Movie/
Function Index() As ActionResult
Dim entities As New MoviesDBEntities()
Return View(entities.MovieSet.ToList())
End Function
End Class
在清單 1 中,MoviesDBEntities 類別是用來代表 MoviesDB 資料庫。 運算式 實體。MovieSet.ToList () 會從 Movies 資料庫資料表傳回所有電影的集合。
建立檢視
在 HTML 資料表中顯示一組資料庫記錄的最簡單方式,就是利用 Visual Studio 所提供的 Scaffolding。
選取功能表選項 [建置]、[建置方案] 來建置您的應用程式。 您必須建置應用程式,才能開啟 [ 新增檢視 ] 對話方塊,否則您的資料類別不會出現在對話方塊中。
以滑鼠右鍵按一下 Index () 巨集指令,然後選取功能表選項 [ 新增檢視 ] (請參閱圖 5) 。
圖 05:新增檢視 (按一下即可檢視全大小影像)
在 [ 新增檢視 ] 對話方塊中,核取標示為 [建立強型別檢視] 的核取方塊。 選取 Movie 類別作為 檢視資料類別。 選取 [清單 ] 作為 檢視內容 (請參閱圖 6) 。 選取這些選項會產生顯示電影清單的強型別檢視。
圖 06:[新增檢視] 對話方塊 (按一下即可檢視完整大小的影像)
按一下 [ 新增] 按鈕之後,就會自動產生清單 2 中的檢視。 此檢視包含逐一查看電影集合並顯示電影每個屬性所需的程式碼。
清單 2 – Views\Movie\Index.aspx
<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of MvcApplication1.Movie))" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Index</h2>
<p>
<%=Html.ActionLink("Create New", "Create")%>
</p>
<table>
<tr>
<th></th>
<th>
Id
</th>
<th>
Title
</th>
<th>
Director
</th>
<th>
DateReleased
</th>
</tr>
<% For Each item In Model%>
<tr>
<td>
<%=Html.ActionLink("Edit", "Edit", New With {.id = item.Id})%> |
<%=Html.ActionLink("Details", "Details", New With {.id = item.Id})%>
</td>
<td>
<%= Html.Encode(item.Id) %>
</td>
<td>
<%= Html.Encode(item.Title) %>
</td>
<td>
<%= Html.Encode(item.Director) %>
</td>
<td>
<%= Html.Encode(String.Format("{0:g}", item.DateReleased)) %>
</td>
</tr>
<% Next%>
</table>
</asp:Content>
您可以選取功能表選項 [ 偵錯]、[開始 偵錯] (或按 F5 鍵) 來執行應用程式。 執行應用程式會啟動 Internet Explorer。 如果您流覽至 /Movie URL,您會看到圖 7 中的頁面。
圖 07: 按一下即可檢視全大小影像 (電影資料表)
如果您不喜歡圖 7 中資料庫記錄方格外觀的任何專案,您可以直接修改 [索引] 檢視。 例如,您可以修改 [索引] 檢視,將 DateReleased 標頭變更為 [發行日期 ]。
使用部分建立範本
當檢視變得太複雜時,最好開始將檢視分成部分。 使用部分可讓您的檢視更容易瞭解和維護。 我們將建立一個部分,我們可用來作為範本來格式化每個電影資料庫記錄。
請遵循下列步驟來建立部分:
- 以滑鼠右鍵按一下 Views\Movie 資料夾,然後選取功能表選項 [新增檢視]。
- 核取標示為 建立部分檢視的核取方塊, (.ascx) 。
- 將部分 MovieTemplate命名為 。
- 核取標示為 [建立強型別檢視] 的核取方塊。
- 選取 [電影] 作為 檢視資料類別。
- 選取 [空白] 作為 檢視內容。
- 按一下 [ 新增 ] 按鈕,將部分新增至您的專案。
完成這些步驟之後,請將 MovieTemplate 部分修改為清單 3。
清單 3 – Views\Movie\MovieTemplate.ascx
<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl(Of MvcApplication1.Movie)" %>
<tr>
<td>
<%= Html.Encode(Model.Id) %>
</td>
<td>
<%= Html.Encode(Model.Title) %>
</td>
<td>
<%= Html.Encode(Model.Director) %>
</td>
<td>
<%= Html.Encode(String.Format("{0:g}", Model.DateReleased)) %>
</td>
</tr>
清單 3 中的部分包含單一記錄資料列的範本。
清單 4 中修改過的索引檢視會使用 MovieTemplate 部分。
清單 4 – Views\Movie\Index.aspx
<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of IEnumerable (Of MvcApplication1.Movie))" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Index</h2>
<table>
<tr>
<th>
Id
</th>
<th>
Title
</th>
<th>
Director
</th>
<th>
DateReleased
</th>
</tr>
<% For Each item In Model%>
<% Html.RenderPartial("MovieTemplate", item)%>
<% Next%>
</table>
</asp:Content>
清單 4 中的檢視包含逐一查看所有電影的 For Each 迴圈。 對於每個電影,MovieTemplate 部分是用來格式化電影。 MovieTemplate 會藉由呼叫 RenderPartial () 協助程式方法來轉譯。
修改過的索引檢視會轉譯資料庫記錄的相同 HTML 資料表。 不過,檢視已大幅簡化。
RenderPartial () 方法與其他大部分協助程式方法不同,因為它不會傳回字串。 因此,您必須使用 < % Html.RenderPartial () % > 來呼叫 RenderPartial () 方法,而不是 < %= Html.RenderPartial () %。 >
總結
本教學課程的目標是說明如何在 HTML 資料表中顯示一組資料庫記錄。 首先,您已瞭解如何利用 Microsoft Entity Framework,從控制器動作傳回一組資料庫記錄。 接下來,您已瞭解如何使用 Visual Studio Scaffolding 來產生自動顯示專案集合的檢視。 最後,您已瞭解如何利用部分來簡化檢視。 您已瞭解如何使用部分作為範本,以便格式化每個資料庫記錄。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應