DynamicData for Asp.net Mvc留言本執行個體 上篇 準備工作及顯示文章列表

來源:互聯網
上載者:User

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.DataAnnotations和System.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 EntityTemplates及FieldTemplates複製到我們建立的Mvc工程的Views/Shared檔案夾

 

資料庫準備工作

建立Articles表

開啟Microsoft SQL Server Management Studio串連後對資料庫點右鍵,建立資料庫

產生Linq to Sql的dbml檔案:

如果不會建,可以搜尋索引鍵:Linq to SQL入門

這個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(),'重典')
讓網站運行起來,顯示文章列表

先來個(我美工就這麼地了,大家諒解一下)

就是將文章列了出來,我們下面為了這個目標而努力

首先,也是很重要的,要先在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留言本執行個體 上篇 準備工作及顯示文章列表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.