ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格

摘要:
我们知道在ASP.NETWebForms页面加载时,GridView会自动呈现为一个元素,使我们不必编写任何html标记,只专注于GridView中检索数据和绑定数据。然而,在ASP.NETMVC应用程序,开发人员必须手动完成View视图标记,如果开发类似WebForms中的GridView表格,是不是感觉有点头痛。从这篇文章开始,我们就探讨如何在ASP.NETMVC应用程序中显示表格数据。废话不多说了,让我们创建一个ASP.NETMVC应用程序,看看如何在一个网页中以表格的形式显示数据库记录。

ASP.NET MVC 3.0(一): MVC 3.0 的新特性 摘要

ASP.NET MVC 3.0(二): MVC的概念及MVC 3.0开发环境

ASP.NET MVC 3.0(三): 初识MVC的Url映射潜规则Routing

ASP.NET MVC 3.0(四): 我要MVC潜规则之配置Routing

ASP.NET MVC 3.0(五): 入手Controller/Action

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图

ASP.NET MVC 3.0(七): MVC 3.0 新的Razor引擎

ASP.NET MVC 3.0(八): MVC 3.0 传递和保存你的Model

ASP.NET MVC 3.0(九): MVC 3.0 验证你的Model

ASP.NET MVC 3.0(十): MVC 3.0 使用 Forms身份验证

ASP.NET MVC 3.0(十一): MVC 3.0 使用筛选器

ASP.NET MVC 3.0(十二): MVC 3.0 使用自定义的Html控件

ASP.NET MVC 3.0(十三): MVC 3.0 防止跨站点请求伪造 (CSRF) 攻击

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格

ASP.NET MVC 3.0(十五): MVC 3.0 实例系列之表格的排序

ASP.NET MVC 3.0(十六): MVC 3.0 实例系列之表格数据的分页

ASP.NET MVC 3.0(十七): MVC 3.0 实例之表格中数据的筛选

ASP.NET MVC 3.0(十八): MVC 3.0 实例系列之表格中合并排序、分页和筛选

ASP.NET MVC 3.0(十九): MVC 3.0 实例之使用开源控件实现表格排序和分页

概述

在ASP.NET MVC里面微软并没有给我们提供像GridView表格之类的控件,但是作为web开发人员表格数据显示是我们面临的常见任务之一,从这节开始我们就一步一步学习如何在基于Razor引擎的ASP.NET MVC页面中实现像GridView一样的表格,并且实现表格中的排序、分页、筛选等功能,便于我们更好的理解和使用ASP.NET MVC。

简介

在ASP.NET WebForms中微软为我们提供了GridView控件,而且控件中提供了一种快速简便的方法来显示表格中的数据集,并提供排序,分页,编辑,删除等一些额外的功能。我们知道在ASP.NET WebForms页面加载时,GridView会自动呈现为一个 <TABLE>元素,使我们不必编写任何html标记,只专注于GridView中检索数据和绑定数据。然而,在ASP.NET MVC应用程序 ,开发人员必须手动完成View视图标记,如果开发类似WebForms中的GridView表格,是不是感觉有点头痛。

从这篇文章开始,我们就探讨如何在ASP.NET MVC应用程序中显示表格数据。然后我们逐渐扩张一步一步完成表格中复杂的功能,包括排序,分页,筛选等增强型功能。

废话不多说了,让我们创建一个ASP.NET MVC应用程序,看看如何在一个网页中以表格的形式显示数据库记录。

创建解决方案

新建一个基于MVC 3.0框架,名为MVC3.Grid的解决方案

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第1张

选择空白解决方案,视图引擎选择Razor引擎,暂时不生成测试框架。

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第2张

解决方案创建成功

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第3张

创建Model

对于Model,我们可以选择使用自定义的几条模拟数据,也可以选择数据库作为基础数据。

此时我们选择Linq to Sql 作为数据模型

鼠标右击Model文件夹--添加新项目

新建Linq to Sql数据模型

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第4张

点击添加后,我们可以在服务器资源管理器中,新建与数据的连接

提供一下例子中Employee和Department两张表的设计

DepartmentID是个int型的自动增长列

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第5张

DepartmentID是外键

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第6张

拖拽出两张表,此处我们主要以Employee和Department两张表作为例子,这两张表以DepartmentID作为外键连接

注意:后面例子中界面上的属性只选取其中几个作为例子。

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第7张

重新生成解决方案,看看我们的项目是否成功。

创建Controller

首先,我们为了能将数据重复使用,做一个简单的Controller基类,命名为BaseController

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第8张

该基类里面,负责与数据库进行通讯。

这样做仅仅是为了做该例子时,获取数据方便,没有考虑其他因素,希望不要纠结与此,谢谢。

该基类的代码如下

publicclassBaseController : Controller
{
privateModelDataContext _DataContext =null;
protectedModelDataContext DataContext
{
get
{
if(_DataContext ==null)
_DataContext
=newModelDataContext();
var options
=newDataLoadOptions();
options.LoadWith
<Employee>(p =>p.EmployeeNO);
_DataContext.LoadOptions
=options;
return_DataContext;
}
}
}

继续创建一个名为EmployeeController的控制器,该控制器继承于上面的BaseController基类

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第9张

创建成功后,控制器默认给出了Index方法

我们可以修改修改,让该Index方法返回一个List<Employee>

代码如下:

publicclassEmployeeController : BaseController
{
////GET: /Employee/publicActionResult Index()
{
var list
=this.DataContext.Employee;
returnView(list);
}
}

创建视图View

我们针对于Index方法创建视图

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第10张

选择基于Razor引擎的视图,选择创建强类型视图

模型类为我们Linq to Sql创建生成的Employee

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第11张

点击添加

修改视图代码如下

@model IEnumerable<MVC3.Grid.Models.Employee>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>成员列表</h2><table border="1"width="100%"style="text-align:center;border-collapse:collapse"><tr><th>编号</th><th>姓名</th><th>性别</th><th>生日</th><th>是否婚配</th></tr>
@foreach (var item in Model)
{
<tr><td>@item.EmployeeNO</td><td>@item.EmployName</td><td>@item.Sex</td><td>@string.Format("{0:yyyy年MM月dd日}", item.Birthday)</td><td>
@if (item.Marital == "1")
{
@:@("是")
}
@if(item.Marital!="1")
{
@:@("否")
}
</td></tr>
}
</table>

修改Global.asax默认主页为Employee

点击运行

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格第12张

可以看到,目前为止,一个标准的表格已经完成。

总结

表格的呈现形式是在遍历list的时候,根据list集合的行数生成的table.tr,根据list中每一项的属性来生成table.td

下节预告

下节开始我们就要,给这个基本的表格头上面加上排序功能。大家可以想想该怎么做呢?

转记忆逝去的青春出处:http://www.cnblogs.com/lukun/

免责声明:文章转载自《ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue项目 elemnet 升级版本Linux中三种SCSI target的介绍之SCST下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

html中#include file的使用方法

有两个文件a.htm和b.htm,在同一文件夹下a.htm内容例如以下 <!-- #include file="b.htm" --> b.htm内容例如以下 今天:雨 31 ℃~26 ℃ <br />明天:雷阵雨 33 ℃~27 ℃ 直接在浏览器中打开a,没有不论什么显示,后来知道,include是SSI(Server Side...

ASP.Net超时时间已到解决办法-

解决办法 1.在代码里面,把未关闭的连接关闭 2.扩大共享池,方法如下: 解决方法可以是修改连接池的连接生存期,因为默认值是60秒,即连接从应用程序被释放后可以在池中保存的时间。 具体操作步骤如下: 如果是ODBC的话,则可以在ODBC Data Source Administrator中手动更改,该程序位于“Start”菜单中的“Programs”-&g...

JS动态创建表格比较【转】

目标:生成一个2000*5的表格,每个单元格的内容是行号+逗号+列号 方法一:使用createElement生成表格,使用insertRow和insertCell方法生成行列,单元格的内容使用innerHTML属性进行填充。 方法二:使用createElement生成表格,使用CreateElement方法生成行列,单元格的内容使用了createTex...

使用kettle实现最基础的数据表同步

最近数据交换项目上需要用到ETL工具,原来一直不太了解,经同事介绍kettle可以很方便地进行数据同步。于是简单试用了一下,实现了从源表到目标表的数据同步(包括增删改)。 我们的需求如下:将业务系统指定表(source表)中的数据,同步到交换平台上相同结构的表(target表)中。不论source表中的数据新增、修改、删除,都会同步更新到target表中。...

MySQL用户权限验证与管理方法详解

本文实例讲述了MySQL用户权限验证与管理方法。分享给大家供大家参考,具体如下: 一、Mysql权限分两阶段验证 1. 服务器检查是否允许连接:用户名、密码,主机地址。 2. 检查每一个请求是否有权限实施。 二、Mysql权限列表 权限 权限级别 权限说明 create 数据库、表或索引 创建数据库、表或索引权限 drop 数据库或表 删除数据...

HTML快速入门3

四、表格 (Table) 1.表格的基本形式 表由 <table> 开始, </table> 结束,表的内容由 <tr>,<th> 和 <td> 定义。 l<tr>说明表的一个行,表有多少行就有多少个 <tr> ; l<th>说明表的列数和相应栏目的名称(列标...