共用方式為


顯示資料庫資料的資料表 (VB)

Microsoft提供

下載 PDF

在本教學課程中,我示範兩種方法來顯示一組資料庫記錄。 我在 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。

請遵循下列步驟來啟動實體資料模型精靈:

  1. 以滑鼠右鍵按一下方案總管視窗中的 Models 資料夾,然後選取功能表選項[新增]、[新增專案]。
  2. 選取 [資料 ] 類別,然後選取 [ADO.NET 實體資料模型] 範本。
  3. 為資料模型命名 MoviesDBModel.edmx ,然後按一下 [ 新增 ] 按鈕。

按一下 [新增] 按鈕之後,[實體資料模型精靈] 會出現 (請參閱圖 1) 。 請遵循下列步驟來完成精靈:

  1. 在 [ 選擇模型內容] 步驟中,選取 [從資料庫產生 ] 選項。
  2. 在 [ 選擇您的資料連線] 步驟中,使用 MoviesDB.mdf 資料連線以及連線設定的名稱 MoviesDBEntities 。 按 [下一步] 按鈕。
  3. 在 [ 選擇您的資料庫物件 ] 步驟中,展開 [資料表] 節點,然後選取 Movies 資料表。 輸入命名空間 Models ,然後按一下 [ 完成] 按鈕。

建立LINQ to SQL類別

圖 01 (按一下以檢視完整大小的影像) 建立LINQ to SQL類別

完成實體資料模型精靈之後,實體資料模型Designer隨即開啟。 Designer應該會顯示 Movies 實體 (請參閱圖 2) 。

實體資料模型Designer

圖 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 標頭變更為 [發行日期 ]。

使用部分建立範本

當檢視變得太複雜時,最好開始將檢視分成部分。 使用部分可讓您的檢視更容易瞭解和維護。 我們將建立一個部分,我們可用來作為範本來格式化每個電影資料庫記錄。

請遵循下列步驟來建立部分:

  1. 以滑鼠右鍵按一下 Views\Movie 資料夾,然後選取功能表選項 [新增檢視]。
  2. 核取標示為 建立部分檢視的核取方塊, (.ascx)
  3. 將部分 MovieTemplate命名為 。
  4. 核取標示為 [建立強型別檢視] 的核取方塊。
  5. 選取 [電影] 作為 檢視資料類別
  6. 選取 [空白] 作為 檢視內容
  7. 按一下 [ 新增 ] 按鈕,將部分新增至您的專案。

完成這些步驟之後,請將 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 來產生自動顯示專案集合的檢視。 最後,您已瞭解如何利用部分來簡化檢視。 您已瞭解如何使用部分作為範本,以便格式化每個資料庫記錄。