zoukankan      html  css  js  c++  java
  • DynamicData for Asp.net Mvc留言本实例 上篇 准备工作及显示文章列表

    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就会看到前面图中的效果

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

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

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

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

  • 相关阅读:
    写一点gil锁吧,其实真的我感觉没啥关系。
    《Effective Python》59个有效方法(今日到25)
    《Python学习笔记本》第五章 迭代器 笔记以及摘要(完结)
    《Python学习笔记本》第四章 函数 笔记以及摘要(完结)
    《Python学习笔记本》第三章 表达式 笔记以及摘要(完结)
    java 之冒泡排序
    Apache Tomcat 之路(三 部署多个应用)
    Apache Tomcat 之路(二 部署web 应用程序)
    Apache Tomcat 之路(一 基本概念)
    移动端 H5 拍照 从手机选择图片,移动端预览,图片压缩,图片预览,再上传服务器
  • 原文地址:https://www.cnblogs.com/chsword/p/MvcDynamicData.html
Copyright © 2011-2022 走看看