DynamicData for Asp.net Mvc留言本实例 上篇 准备工作及显示文章列表

简介: DynamicDataMVC出现也有一段时间了,一直没有正视它,今天抽一点时间了解了一下感觉还算不错。 本身下载时自带一个博客的例子,但例子略显复杂,不容易理清思路 附:本文初稿某兄入手先读,提出诸多疑问想必其它朋友可能也会有类似问题,故蓝字注明,当然大多朋友可以省去不看 下载及新建工程 下载地址:http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx 选那个DynamicDataMVC.zip就行,如随版本变化,请大家举一反三。

DynamicDataMVC出现也有一段时间了,一直没有正视它,今天抽一点时间了解了一下感觉还算不错。

本身下载时自带一个博客的例子,但例子略显复杂,不容易理清思路

附:本文初稿某兄入手先读,提出诸多疑问想必其它朋友可能也会有类似问题,故蓝字注明,当然大多朋友可以省去不看

下载及新建工程

下载地址:http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx 选那个DynamicDataMVC.zip就行,如随版本变化,请大家举一反三。

本文环境为Visual Studio 2008/Sql Server 2005

1、建立一个Asp.net Mvc工程:DMvc

2、引用Microsoft.Web.DynamicData.Mvc.DLL,及系统组件System.ComponentModel.DataAnnotationsSystem.Web.DynamicData

3、在Web.config中的pages/namespaces添加一个add节点其namespace属性为Microsoft.Web.DynamicData.Mvc

4、system.web/compilation/assemblies中添加节点add <add assembly="System.Web.DynamicData, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

5.将DynamicDataMVC中Views/Shared/ 中的ValidationSummary.ascx EntityTemplatesFieldTemplates复制到我们新建的Mvc工程的Views/Shared文件夹

 

数据库准备工作

建立Articles表

打开Microsoft SQL Server Management Studio连接后对数据库点右键,新建数据库

image_thumb2[1]

生成Linq to Sql的dbml文件:

如果不会建,可以搜索关键字:Linq to SQL入门

image14[1]

这个DataContext叫做DMvcDataDataContext

为了查询方便,我们先向其中加些数据(不多写了,也就20条就够了)

 INSERT INTO [Articles]([Title],[Body],[AddTime],[Author])
     VALUES('文章1','内容1',getdate(),'重典')
INSERT INTO [Articles]([Title],[Body],[AddTime],[Author])
     VALUES('文章2','内容2',getdate(),'重典')
INSERT INTO [Articles]([Title],[Body],[AddTime],[Author])
     VALUES('文章3','内容3',getdate(),'重典')

让网站运行起来,显示文章列表

先来个效果图(我美工就这么地了,大家谅解一下)

image_thumb9[1]

就是将文章列了出来,我们下面为了这个目标而努力

首先,也是很重要的,要先在Application_Start中添加我们要自动化的DataContext

 		protected void Application_Start() {
			RegisterRoutes(RouteTable.Routes);
			var model = new MetaModel();
			model.RegisterContext(typeof(DMvc.Models.DMvcDataDataContext),
				new ContextConfiguration { ScaffoldAllTables = true });
		}

如果您不知道Application_Start在哪里,可以百度一下:Global.asax文件的作用

我们建一个新的Controller:ArticleController来专门进行Article的CRUD(Create/Read/Update/Delete).

我们首先建一个叫List的Action.从数据库中读取数据放入ViewData.Model中

     public class ArticleController : Controller {
        /// <summary>
        /// 文章列表
        /// </summary>
        /// <param name="p">当前页号</param>
        /// <param name="ps"> pagesize</param>
        /// <returns></returns>
        public ActionResult List(int? p, int? ps) {//
            if (!p.HasValue) p = 1;//处理为空时的情况
            if (!ps.HasValue) ps = 4;//默认一页4条
            using (var db = new DMvcDataDataContext()) {
                var x = new PagedList<Articles>(db.Articles, p.Value, ps.Value);//读取数据并自动分页
                return View(x);
            }
        }
    }

这里我们用到了PagedList这个类来将db.Articles自动分页,它是DynamicData的一个辅助工具,用起来还算不错

我们再建立一个View页使之继承于PagedList<Articles>

即:

 	public partial class List : ViewPage<PagedList<Articles>> {
	}

在view中我们写如下代码:

 	<!--显示列表开始-->
	<%foreach (var a in ViewData.Model) { %>
	<fieldset>
		<legend>
			<% Html.RenderDynamicField(a, "Title"); %></legend>
		内容:<%Html.RenderDynamicField(a, "Body"); %><br />
		发表日期:<%Html.RenderDynamicField(a, "Addtime"); %>
		作者:<%Html.RenderDynamicField(a, "Author"); %>
	</fieldset>
	<% } %>
	<!--显示列表结束-->
	<!--分页的按钮开始-->
	分页按钮
	<% if (ViewData.Model.HasPreviousPage) { %>
		<%=Html.ActionLink("第一页", "List", new { p=1},null)%>
		<%=Html.ActionLink("上一页", "List", new { p = ViewData.Model.CurrentPage - 1 }, null)%>
	<% }else { %>
		第一页 上一页
	<% } %>
	当前:<%= ViewData.Model.CurrentPage %>	/共<%= ViewData.Model.TotalPages%><% if (ViewData.Model.HasNextPage) { %>
		<%=Html.ActionLink("下一页", "List", new { p = ViewData.Model.CurrentPage + 1 }, null)%>
		<%=Html.ActionLink("最后页", "List", new { p = ViewData.Model.TotalPages }, null)%>
	<% }else { %>
		下一页 最后页
	<% } %>
	<!--分页的按钮结束-->

 

虽然有点乱,但是基本上分成数据显示和分页按钮两个部分最后访问/article/List?p=2就会看到前面图中的效果

 

示例下载:http://files.cnblogs.com/chsword/DMvc.rar

 

DynamicData for Asp.net Mvc留言本实例 下篇 更新

DynamicData for Asp.net Mvc留言本实例 中篇 新建.删除.数据验证

DynamicData for Asp.net Mvc留言本实例 上篇 准备工作及显示文章列表

目录
相关文章
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
44 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
71 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
53 0
|
4月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
4月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
136 0
|
7月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
204 0
|
7月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
82 0
|
7月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
354 5
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
171 0
|
7月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界