asp.net MVC 使用PagedList.MVC實現分頁

来源:http://www.cnblogs.com/godbell/archive/2017/07/23/7226545.html
-Advertisement-
Play Games

在上一篇的EF之DB First中,存在以下的兩個問題: 1. 添加/編輯頁面顯示的是屬性名稱,而非自定義的名稱(如:姓名、專業...) 2. 添加/編輯時沒有加入驗證 3. 數據展示使用分頁 @Html.LabelFor(model => model.Name, htmlAttributes: n ...


在上一篇的EF之DB First中,存在以下的兩個問題:

1. 添加/編輯頁面顯示的是屬性名稱,而非自定義的名稱(如:姓名、專業...)

2. 添加/編輯時沒有加入驗證

3. 數據展示使用分頁

@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) 是顯示屬性Name的“標簽”,如果沒有指定Display特性,則直接顯示屬性名Name

通用資料庫生成的實體模型文件與代碼一般不直接修改(防止下次生成時覆蓋),這裡要使用驗證與實體分離

添加一個驗證類,代碼如下 :

 

using System.ComponentModel.DataAnnotations;

namespace Zhong.Web.Models
{
    [MetadataType(typeof(T_StudentValidateInfo))]
    public partial class T_Student
    {
    }
    public class T_StudentValidateInfo
    {
        [Display(Name="姓名")]
        [Required(ErrorMessage ="姓名不能為空")]
        [StringLength(10,ErrorMessage ="姓名長度超出限制")]
        public string Name { get; set; }

        [Display(Name="學號")]
        [Required]
        [StringLength(20,MinimumLength =10,ErrorMessage ="長度為10-20")]
        public string StudentId { get; set; }
    }
}
View Code

 

此時前臺訪問並提交:

 

從上圖可以發現Name變成了“姓名”,StudentsId變成了“學號”,點擊Create按鈕後,出現了驗證提示信息。

分頁的實時使用PagedList.MVC插件,可以nuget添加引用

 

 

StudentsController中增加一個List的控制器方法:

        public ActionResult List(int page = 1)
        {
            //var students = entities.T_Student.OrderBy(s => s.Id).Skip((page - 1) * 2).Take(2);
            var students = entities.T_Student.OrderBy(s => s.Id);
            return View(students.ToPagedList(page, 2));
        }
View Code

 

視圖代碼如下:

@using PagedList.Mvc
@model PagedList.IPagedList<Zhong.Web.Models.T_Student>

@{
    ViewBag.Title = "List";
}

<h2>List</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            姓名
        </th>
        <th>
            學號
        </th>
        <th>
            專業
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.StudentId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.T_Major.Name)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}

</table>
@Html.PagedListPager(Model,page => Url.Action("List",new { page}))
View Code

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文為命令rsync的man文檔翻譯,幾乎所有的選項都翻譯了,另外關於篩選規則部分只翻譯了一部分。由於原文很多地方都比較啰嗦,所以譯文中有些內容可能容易讓國人疑惑,所以我個人在某些地方加上了註釋。若有錯誤之處,盼請指出。 回到系列文章大綱:http://www.cnblogs.com/f-ck-ne ...
  • 本篇為rsync官方推薦文章How Rsync Works的翻譯,主要內容是Rsync術語說明和簡單版的rsync工作原理。本篇沒有通篇都進行翻譯,前言直接跳過了,但為了文章的完整性,前言部分的原文還是保留了。 How Rsync WorksA Practical Overview Foreword ...
  • 1. 首先進入單用戶模式: 1). ubuntu : 上述情況可以在grub界面選擇第二項修複,但沒有grub可以參考: 1、重啟ubuntu,隨即長按shirft進入grub菜單; 2、選擇recovery mode,按"e"鍵進入編輯頁面;如下: 非恢復模式為: 3、將ro recovery n ...
  • 1.先創建一個文件夾用以存放鏡像 2.運行vmware,點擊創建新的虛擬機 3.選擇典型安裝 4. 選擇稍後安裝操作系統 5.選擇客戶機操作系統為Linux,版本為CentOS 64位 6. 選擇一開始創建的用以存放鏡像的文件,並給虛擬機命名 7.選擇磁碟大小,選擇預設20G即可 8.點擊完成 9. ...
  • 做為程式員的我們,經常會要用到文件的上傳和下載功能。到了需要用的時候,各種查資料。有木有..有木有...。為了方便下次使用,這裡來做個總結和備忘。 利用表單實現文件上傳 最原始、最簡單、最粗暴的文件上傳。 前端代碼: 【註意】 1、需要post提交 2、enctype="multipart/form ...
  • 背水一戰 Windows 10 之 控制項(媒體類): 通過處理 Pointer 相關事件實現一個簡單的塗鴉板, InkCanvas 基礎知識 ...
  • 一個基於Entity Framework的自定義分頁,增刪改的通用實現,同時包含Entity的生成,Specification模式,Unit of Work實現。 ...
  • 引子在此前的一篇文章中,我介紹瞭如何在本地docker環境中運行ASP.NET Core跨平臺應用程式(http://www.cnblogs.com/chenxizhang/p/7148657.html),看起來非常不錯,不是嗎?那麼,如果我們希望真正在實際的生產環境去部署和運行這個應用程式,應該怎... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...