MVC 自定义HtmlHelper帮助类型之分页

方法一:

在项目中增加App_Code文件夹,新增一个MyHtmlper.cshtml视图文件

写入代码:

@helper Pagger(int pageIndex, int pageCount)
{
    <div>        @for (int i = 1; i <= pageCount; i++)
        {
            if (i != pageIndex)
            {
                <span  > <a href="/Home/Index/@(i)[email protected](pageCount)">@(i)</a></span>
            }
            else
            {
                <span >@i</span>
            }
        }
    </div>
}

新增一个HomeController

public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index(int pageIndex = 1,int pageCount=10)
        {
            if (pageIndex <= 0)
                pageIndex = 1;

            TempData["PageIndex"] = pageIndex;
            TempData["PageCount"] = pageCount;
            return View();
        }
    }

写一个新的路由

 public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
               name: "Pagger",
               url: "{controller}/{action}/{pageIndex}_{pageCount}",
               defaults: new { controller = "Home", action = "Index"}
           );
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }

新增视图:

@{
    ViewBag.Title = "Index";
}
@{
    var pageindex = Convert.ToInt32( TempData["PageIndex"]);
    var pageCount = Convert.ToInt32(TempData["PageCount"]);
}
<div>
    当前是第 @pageindex 页
</div>
<hr/>
@MyHtmlper.Pagger(pageindex, pageCount)

运行结果

方法二:

扩展HtmlHelper方法,新增一个CodeHelper类型,扩展HtmlHelper一个Pagger方法

 public static class CodeHelper
    {
        public static MvcHtmlString Pagger(this HtmlHelper htmlHelper, int pageIndex, int pageCount)
        {
            var htmlSb = new StringBuilder();
            for (int i = 1; i <= pageCount; i++)
            {

                if (i != pageIndex)
                {
                    htmlSb.Append(" <span> <a href =\"/Home/Index/" + i + "_" + pageCount + "\" >" + i + "</a></span>");
                }
                else
                {
                    htmlSb.Append("<span>" + i + "</span>");
                }
            }
            return new MvcHtmlString(htmlSb.ToString());
        }
    }

  修改视图

@{
    ViewBag.Title = "Index";
}
@{
    var pageindex = Convert.ToInt32( TempData["PageIndex"]);
    var pageCount = Convert.ToInt32(TempData["PageCount"]);
}
<div>
    当前是第 @pageindex 页
</div>
<hr/>
@MyHtmlper.Pagger(pageindex, pageCount)
<hr/>
@Html.Pagger(pageindex,pageCount)

运行结果:

本人当前只知道两种方法。分享出了给大家借鉴

时间: 2024-10-24 12:04:38

MVC 自定义HtmlHelper帮助类型之分页的相关文章

MVC自定义编辑视图,DateTime类型属性显示jQuery ui的datapicker

实现的效果为:在编辑视图中,对DateTime类型的属性,显示jQuery UI的datepicker.效果如下: Student.cs public class Student    {        public int Id { get; set; }        public string Name { get; set; }        public DateTime? JoinTime { get; set; }    } HomeController: public class

在 ASP.NET MVC 中创建自定义 HtmlHelper

在ASP.NET MVC应用程序的开发中,我们常碰到类似Html.Label或Html.TextBox这样的代码,它将在网页上产生一个label或input标记.这些HtmlHelper的扩展方法有些像WebForm中的控件,只需传入一些参数即可生成相应的HTML代码.本文将介绍创建HtmlHelper的方法. Html.Textbox方法的返回值是MvcHtmlString,它生成了一些HTML代码.创建HtmlHelper,就像在生成HTML代码.下面以一个带有简要描述功能的链接HtmlHe

asp.net mvc 自定义pager封装与优化

asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自定义分页 pager 越来越容易扩展了. HtmlHelper Pager扩展 Pager V1.0 : 1 /// <summary> 2 /// Pager V1.0 3 /// </summary> 4 /// <param name="helper"&

mvc4 自定义HtmlHelper

好久没写博客了,最近只看博客不写的习惯很不好啊. 好了,最近的项目中大量的用到了表单,很多表单有特殊的编写,但是在该项目中又有很多重复的地方,这个时候若能封装成htmlhelper将大大降低工作量的.下面给出基本的使用模型,备忘 using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Web; using System.Web.Mv

MVC3/4 自定义HtmlHelper截断文本内容(截取)

在MVC目录下新建一个名为 Extersions  的文件夹,在该文件夹中新建一个截断文本类,取名为:CutOfTextExtersions 该类代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace System.Web.Mvc //修改为所属System.Web.Mvc命名空间 方便直接使用 { ///

MVC验证11-对复杂类型使用jQuery异步验证

原文:MVC验证11-对复杂类型使用jQuery异步验证 本篇体验使用"jQuery结合Html.BeginForm()"对复杂类型属性进行异步验证.与本篇相关的"兄弟篇"包括: MVC验证08-jQuery异步验证    MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证    MVC验证10-到底用哪种方式实现客户端服务端双重异步验证 准备工作 □ js方面:1.jquery的某个版本2.jquery.validate.js3.jquery

Mvc自定义验证

假设我们书店需要录入一本书,为了简单的体现我们的自定义验证,我们的实体定义的非常简单,就两个属性,一个名称Name,一个出版社Publisher. public class BookInfo { public string Name { get; set; } public string publisher { get; set; } } Ok,需求有了,实体有了,那么添加我们的控制器和视图.先把代码贴出来.稍后我们在做分析 [HttpGet] public ActionResult Index

SSH系列:(15)自定义Result返回类型(StrutsResultSupport)

总的来说,写一个自定义的Result Type有三个步骤: (1)写一个实现了Result接口的类 (2)对该类进行注册 (3)使用该类 下面分成两个部分:第1个部分,只要是侧重于项目上的使用方式,第2部分是整理自Sturcts In Action书上的自定义返回Json类型的Result Tye. 1.对错误的特殊处理(项目中) 在有些特殊情况下,如果没有异常信息,但是有错误,并且有错误信息等内容,此时也需要进行友好的错误处理的话,那么可以借助StrutsResultSupport 返回结果类

MVC中HtmlHelper用法大全参考

解析MVC中HtmlHelper控件7个大类中各个控件的主要使用方法(1) 2012-02-27 16:25 HtmlHelper类在命令System.Web.Mvc.Html之中,主要由7个静态类组成,它们分别是FormExtensions类,InputExtensions类,LinkExtensions类,SelectExtensions类,TextExtensions类,ValidationExtensions类,RenderPartialExtensions类. 为了方便开发者使用Htm