無廢話MVC入門教程八[MvcPager分頁控件的使用]


朋友炒股兩個月賺了10萬,我幫他推廣一下公眾號,把錢用來投資總比放銀行連通貨膨脹都跑不過里強硬核離職,在家炒股 ,這是他每天的日志,有些經驗是花錢也買不到的。

本文目標

一、能夠使用MvcPager進行分頁

本文目錄

一、MvcPager控件的簡單使用

二、C#擴展方法

一、MvcPager控件的簡單使用

1、添加MvcPager.dll的引用[下載]

2、Control中的方法

 1         //獲取列表
 2         public ActionResult List(int? id = 1)
 3         {
 4             List<DTO.User> userList = new List<DTO.User>();
 5             int totalCount = 0;
 6             int pageIndex = id ?? 1;
 7             userList = SC.Repository.User.GetList("", 2, (pageIndex - 1) * 2, out totalCount);
 8             PagedList<DTO.User> mPage = userList.AsQueryable().ToPagedList(pageIndex, 2);
 9             mPage.TotalItemCount = totalCount;
10             mPage.CurrentPageIndex = (int)(id ?? 1);
11             return View(mPage);
12         }

SC.Repository.User.GetList("", 2, (pageIndex - 1) * 2, out totalCount)方法為分頁方法,此處的StrUserName只是在查詢的時候一個條件而發,其他和傳統的分頁一樣如下:

1 public static List<DTO.User> GetList(string StrUserName, int PageSize, int CurrentCount, out int TotalCount)

PagedList<DTO.User> mPage = userList.AsQueryable().ToPagedList(pageIndex, 2);

這里用到了擴展方法,首先將userList調用Linq中的擴展IEnumerable接口的方法,把List<T>轉換成為IQueryable<T>,接口如下:

1 public static IQueryable<TElement> AsQueryable<TElement>(this IEnumerable<TElement> source);

再調用MvcPager中對IQueryable<T>的擴展方法轉換成PagedList<T>供View中使用,接口如下:

1 public static PagedList<T> ToPagedList<T>(this IQueryable<T> allItems, int pageIndex, int pageSize);

3、View中使用MvcPager

 1 @model PagedList<SongCai8.DTO.User>
 2 @using Webdiyer.WebControls.Mvc;
 3 @{
 4     Layout = null;
 5 }
 6 <!DOCTYPE html>
 7 <html>
 8 <head>
 9     <title>List</title>
10 </head>
11 <body>
12     @foreach (SongCai8.DTO.User user in Model)
13     {
14         @user.UserID<span>---</span>@user.UserName<span>---</span> 
15         @Html.ActionLink("Edit", "Edit", new { id = user.UserID }) <span>---</span> 
16         @Html.ActionLink("Details", "Details", new { id = user.UserID }) <span>---</span> 
17         @Html.ActionLink("Delete", "Delete", new { id = user.UserID })<span>---</span> 
18 
19         <br />
20     }
21     <br />
22     <br />
23     @Html.Pager(Model, new PagerOptions
24 {
25     PageIndexParameterName = "id",
26     ShowPageIndexBox = true,
27     FirstPageText = "首頁",
28     PrevPageText = "上一頁",
29     NextPageText = "下一頁",
30     LastPageText = "末頁",
31     PageIndexBoxType = PageIndexBoxType.TextBox,
32     PageIndexBoxWrapperFormatString = "請輸入頁數{0}",
33     GoButtonText = "轉到"
34 })
35     <br />
36     >>分頁 共有 @Model.TotalItemCount 篇留言 @Model.CurrentPageIndex/@Model.TotalPageCount
37 </body>
38 </html>

4、效果如下:

二、C#擴展方法

MSDN:擴展方法使您能夠向現有類型“添加”方法,而無需創建新的派生類型、重新編譯或以其他方式修改原始類型。 擴展方法是一種特殊的靜態方法,但可以像擴展類型上的實例方法一樣進行調用。

理解什么是擴展方法:用靜態類及靜態方法為原有類的添加新的方法。說起來有點抽象,邊上代碼邊解釋。

原始類:

1     public class Person
2     {
3         public string ShowName()
4         {
5             return "顯示名稱";
6         }
7     }

    我們定義了一個Person類,類里只有一個方法ShowName()。眾所周知,代碼如下:

1             Person person = new Person();
2             person.ShowName();

擴展類:

    加入“顯示密碼的”擴展方法(為了體現出對比性,下面代碼稍有重復):

 1     //原始類
 2     public class Person
 3     {
 4         public string ShowName()
 5         {
 6             return "顯示名稱";
 7         }
 8     }
 9 
10     //擴展Person的靜態類
11     public static class ExtensionMethod
12     {
13         public static string ShowPassword(this Person person)
14         {
15             return "顯示密碼";
16         }
17     }

代碼解釋:

    ExtensionMethod中的ShowPassword參數this Person 說明要擴展的類型為Person類,並且要用this關鍵字修飾。在使用時這個參數是不需要傳入的,這點和我們在傳統的類中方法參數有些不同。

使用:

    使用與平時我們使用在類中定義的方法相同,代碼如下:

1             Person person = new Person();
2             //原始方法
3             Response.Write(person.ShowName());
4             //換行
5             Response.Write("<br />");
6             //擴展方法
7             Response.Write(person.ShowPassword());

效果如下:

應用:

最常見的擴展方法是添加查詢功能添加到現有 System.Collections.IEnumerable 和 System.Collections.Generic.IEnumerable<T> 類型的 LINQ 標准查詢運算符。若要使用標准查詢運算符,請首先將它們輸入與 using System.Linq 名稱空間。 然后,任何實現了 IEnumerable<T> 的類型看起來都具有 GroupBy、OrderBy、Average 等實例方法。 在 IEnumerable<T> 類型的實例(如 List<T> 或 Array)后鍵入“dot”時,可以在 IntelliSense 語句完成中看到這些附加方法。

詳細請查閱MSDN:http://msdn.microsoft.com/zh-cn/library/bb383977.aspx 

版權:http://www.cnblogs.com/iamlilinfeng


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM