下载 PDF
在本教程中,我演示了显示一组数据库记录的两种方法。 我演示了在 HTML 表中设置一组数据库记录格式的两种方法。 首先,我将介绍如何直接在视图中设置数据库记录的格式。 接下来,我将演示如何在设置数据库记录格式时利用分部。
本教程的目的是说明如何在 ASP.NET MVC 应用程序中显示数据库数据的 HTML 表。 首先,了解如何使用 Visual Studio 中包含的基架工具生成自动显示一组记录的视图。 接下来,你将了解如何在设置数据库记录格式时使用分部作为模板。
创建模型类
我们将显示 Movies 数据库表中的记录集。 Movies 数据库表包含以下列:
在本教程中,我们将使用 Microsoft 实体框架。 但是,请务必了解,可以使用各种不同的技术从 ASP.NET MVC 应用程序(包括 LINQ to SQL、NHibernate 或 ADO.NET)与数据库进行交互。
按照以下步骤启动实体数据模型向导:
右键单击“解决方案资源管理器”窗口中的“模型”文件夹,然后选择菜单选项
“添加”、“新建项
”。
选择
“数据
”类别,然后选择
“ADO.NET 实体数据模型
”模板。
为数据模型命名
MoviesDBModel.edmx
,然后单击“
添加
”按钮。
单击“添加”按钮后,将显示实体数据模型向导 (请参阅图 1) 。 按照以下步骤完成向导:
在
“选择模型内容
”步骤中,选择“
从数据库生成”
选项。
在
“选择数据连接”
步骤中,使用
MoviesDB.mdf
数据连接和名称
MoviesDBEntities
进行连接设置。 单击“下一步”按钮。
在
“选择数据库对象”
步骤中,展开“表”节点,选择“Movies”表。 输入命名空间
“模型
”,然后单击“
完成
”按钮。
图 01
:创建 LINQ to SQL 类 (
单击以查看全尺寸图像
)
完成实体数据模型向导后,实体数据模型Designer打开。 Designer应显示 Movies 实体, (请参阅图 2) 。
图 02
:实体数据模型Designer (
单击以查看全尺寸图像
)
在继续之前,我们需要进行一次更改。 实体数据向导生成一个名为
Movies 的
模型类,该类表示 Movies 数据库表。 由于我们将使用 Movies 类来表示特定电影,因此我们需要将类的名称修改为
Movie
而不是
Movies
(单数而不是复数) 。
双击设计器图面上的类的名称,并将类的名称从“电影”更改为“电影”。 进行此更改后,单击“
保存
”按钮 (软盘) 图标以生成 Movie 类。
创建电影控制器
现在,我们已经有了表示数据库记录的方法,我们可以创建一个返回电影集合的控制器。 在 Visual Studio 解决方案资源管理器 窗口中,右键单击 Controllers 文件夹并选择菜单选项
“添加”,控制器
(请参阅图 3) 。
图 03
:“添加控制器”菜单 (
单击以查看全尺寸图像
)
出现“
添加控制器
”对话框时,输入控制器名称 MovieController (请参阅图 4) 。 单击“
添加”
按钮添加新控制器。
图 04
:“添加控制器”对话框 (
单击以查看全尺寸图像
)
我们需要修改 Movie 控制器公开的 Index () 操作,以便它返回数据库记录集。 修改控制器,使其看起来像清单 1 中的控制器。
列表 1 - Controllers\MovieController.cs
using System.Linq;
using System.Web.Mvc;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
public class MovieController : Controller
// GET: /Movie/
public ActionResult Index()
var entities = new MoviesDBEntities();
return View(entities.MovieSet.ToList());
在清单 1 中,MoviesDBEntities 类用于表示 MoviesDB 数据库。 若要使用此类,需要导入 MvcApplication1.Models 命名空间,如下所示:
using MvcApplication1.Models;
表达式 实体。MovieSet.ToList () 从 Movies 数据库表返回所有电影的集合。
在 HTML 表中显示一组数据库记录的最简单方法是利用 Visual Studio 提供的基架。
通过选择菜单选项“ 生成”、“生成解决方案”来生成应用程序。 必须先生成应用程序,然后才能打开“ 添加视图 ”对话框,否则数据类不会显示在对话框中。
右键单击 Index () 操作,然后选择菜单选项 “添加视图 ” (请参阅图 5) 。
图 05:添加视图 (单击以查看全尺寸图像)
在“添加视图”对话框中,检查标记为“创建强类型视图”的复选框。 选择 Movie 类作为 视图数据类。 选择“ 列表 ”作为 视图内容 (请参阅图 6) 。 选择这些选项将生成显示电影列表的强类型视图。
图 06:“添加视图”对话框 (单击以查看全尺寸图像)
单击“ 添加” 按钮后,将自动生成清单 2 中的视图。 此视图包含循环访问电影集合并显示电影的每个属性所需的代码。
列表 2 - Views\Movie\Index.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication1.Models.Movie>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Index</h2>
<table>
<th></th>
Title
Director
DateReleased
<% foreach (var item in Model) { %>
<%= Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |
<%= Html.ActionLink("Details", "Details", new { id=item.Id })%>
<%= Html.Encode(item.Id) %>
<%= Html.Encode(item.Title) %>
<%= Html.Encode(item.Director) %>
<%= Html.Encode(String.Format("{0:g}", item.DateReleased)) %>
<% } %>
</table>
<%= Html.ActionLink("Create New", "Create") %>
</asp:Content>
可以通过选择菜单选项 “调试”、“开始调试 (或按 F5 键) 来运行应用程序。 运行应用程序会启动 Internet Explorer。 如果导航到 /Movie URL,则会看到图 7 中的页面。
图 07:电影表 (单击以查看全尺寸图像)
如果不喜欢图 7 中有关数据库记录网格外观的任何内容,则只需修改“索引”视图即可。 例如,可以通过修改“索引”视图,将 DateReleased 标头更改为 “发布日期 ”。
创建包含分部的模板
当视图变得过于复杂时,最好开始将视图分解为分部。 使用分部可让你的视图更易于理解和维护。 我们将创建一个部分,我们可以将其用作模板来设置每个电影数据库记录的格式。
按照以下步骤创建部分:
右键单击 Views\Movie 文件夹,然后选择菜单选项 “添加视图”。
选中标记为创建 分部视图 (.ascx) 复选框。
将部分 MovieTemplate 命名为 。
选中标记为 “创建强类型视图”的复选框。
选择“Movie”作为 视图数据类。
选择“空”作为 视图内容。
单击“ 添加 ”按钮,将部分添加到项目。
完成这些步骤后,将 MovieTemplate 部分修改为列表 3。
列表 3 – Views\Movie\MovieTemplate.ascx
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication1.Models.Movie>" %>
<%= Html.Encode(Model.Id) %>
<%= Html.Encode(Model.Title) %>
<%= Html.Encode(Model.Director) %>
<%= Html.Encode(String.Format("{0:g}", Model.DateReleased)) %>
清单 3 中的部分包含单行记录的模板。
列表 4 中修改后的索引视图使用 MovieTemplate 部分。
列表 4 - Views\Movie\Index.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication1.Models.Movie>>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Index</h2>
<table>
Title
Director
DateReleased
<% foreach (var item in Model) { %>
<% Html.RenderPartial("MovieTemplate", item); %>
<% } %>
</table>
</asp:Content>
列表 4 中的视图包含一个循环访问所有电影的 foreach 循环。 对于每个电影,MovieTemplate 部分用于设置电影的格式。 通过调用 RenderPartial () 帮助程序方法呈现 MovieTemplate。
修改后的索引视图呈现完全相同的数据库记录 HTML 表。 但是,视图已大大简化。
RenderPartial () 方法不同于大多数其他帮助程序方法,因为它不返回字符串。 因此,您必须使用 <% Html.RenderPartial () ; %> 而不是 <%= Html.RenderPartial () ; %>调用 RenderPartial () 方法。
本教程的目的是说明如何在 HTML 表中显示一组数据库记录。 首先,你了解了如何利用 Microsoft 实体框架从控制器操作返回一组数据库记录。 接下来,你学习了如何使用 Visual Studio 基架生成可自动显示项集合的视图。 最后,你了解了如何利用分部来简化视图。 你已了解如何使用分部作为模板,以便设置每个数据库记录的格式。
上一页下一页