zoukankan      html  css  js  c++  java
  • 使用MVCPager做AJAX分页所走的弯路

    使用MVCPager做AJAX分页所需要注意的地方:

    1.测试版本MvcPager-3.0.1

    2.当需要使用页索引输入或下拉框以及使用Ajax分页模式时,必须用Html.RegisterMvcPagerScriptResource方法注册MvcPager客户端jQuery插件,不注册此插件则选择或输入页索引后将无法跳转,Ajax功能也无法正常运行。  

    具体代码:@{Html.RegisterMvcPagerScriptResource();}  注:在view中加

    3.一定要引用jquery.unobtrusive-ajax.min.js 这个JS插件

    4.如果要更新部分页面,一定要把子页面的Model放到父页面的Model中传过去,不能使用html.action然后子页面去请求自己的数据这种方式。这点要切记啊!


    5.也是致命的一点:分页条里面指定的UpdateTargetId 一定要是分页条的父级节点,而不能同级,反正我尝试的时候是这样子。


    6.分页条写法:


    @Ajax.Pager(Model, new PagerOptions { ShowPageIndexBox = true, PageIndexBoxType = PageIndexBoxType.TextBox, ShowGoButton = true }, new MvcAjaxOptions { UpdateTargetId = "Review", EnablePartialLoading = true })

    model

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ZuHao.Model
    {
    
        public class Recharge
        {
            private long _id;
            ////<summary>
            ///
            ///</summary>
            public long Id
            {
                get { return _id; }
                set { _id = value; }
            }
    
            private string _username;
            ////<summary>
            ///
            ///</summary>
            public string UserName
            {
                get { return _username; }
                set { _username = value; }
            }
    
            private decimal _money;
            ////<summary>
            ///
            ///</summary>
            public decimal Money
            {
                get { return _money; }
                set { _money = value; }
            }
    
            private decimal _balance;
            ////<summary>
            ///
            ///</summary>
            public decimal Balance
            {
                get { return _balance; }
                set { _balance = value; }
            }
    
            private decimal _before;
            ////<summary>
            ///
            ///</summary>
            public decimal Before
            {
                get { return _before; }
                set { _before = value; }
            }
    
            private string _ip;
            ////<summary>
            ///
            ///</summary>
            public string Ip
            {
                get { return _ip; }
                set { _ip = value; }
            }
    
            private string _mark;
            ////<summary>
            ///
            ///</summary>
            public string Mark
            {
                get { return _mark; }
                set { _mark = value; }
            }
            private DateTime _operatedate;
            ////<summary>
            ///
            ///</summary>
            public DateTime OperateDate
            {
                get { return _operatedate; }
                set { _operatedate = value; }
            }
    
        }
    }
    

    Controller

            [HttpGet]
            [CheckLogin]
            public ActionResult MyOrder(int id = 1)
            {
                string username = Session["LoginUserId"].ToString();
                if (string.IsNullOrEmpty(username))
                {
                    return View("Home/Login");
                }
          
                IDbConnection conn = new SqlConnection(connString);
                using (conn)
                {
                    //检测用户名是否存在
                    string sql = "SELECT * FROM Recharge WHERE UserName = @UserName";
                    DynamicParameters Parameters = new DynamicParameters();
                    Parameters.Add("UserName", username);
                    PagedList<Recharge> recharges = conn.Query<ZuHao.Model.Recharge>(sql, Parameters).ToList().ToPagedList(id, 5);
                    if (Request.IsAjaxRequest())
                    {
                        return PartialView("_MyOrder", recharges);
                    }
                    return View(recharges);
                }
    
            }

    MyOrder.cshtml

    @model Webdiyer.WebControls.Mvc.PagedList<ZuHao.Model.Recharge>
    @using Webdiyer.WebControls.Mvc;
    @{
        ViewBag.Title = "我的订单  - 畅租网";
        Layout = "~/Views/Shared/_LayoutHome.cshtml";
    }
    <div class="container">
        <div class="row clearfix">
            <div class="col-md-3 column">
                <ul class="nav nav-pills nav-stacked">
                    <li><a href="~/Main/PersonalData">我的账号</a></li>
                    <!-- 这里的active属性就是使得所在的li的背景色变为蓝色-->
                    <li class="active"><a href="~/Main/MyOrder">我的订单</a></li>
                    <li><a href="~/Main/JoinVIP">开通续费VIP</a></li>
                    <li><a href="~/Main/Quit">退出</a></li>
                </ul>
            </div>
            @{Html.RegisterMvcPagerScriptResource();}
            <div id="articles">
                @Html.Partial("_MyOrder", Model)
            </div>
        </div>
    </div>
    

    _MyOrder.cshtml

    @model Webdiyer.WebControls.Mvc.PagedList<ZuHao.Model.Recharge>
    @using Webdiyer.WebControls.Mvc;
    <div class="col-md-9 column">
        <table class="table table-hover table-bordered">
            <tbody>
                <tr class="info">
                    <th> 用户名 </th>
                    <th> 充值金额 </th>
                    <th> 当前余额 </th>
                    <th> 之前余额 </th>
                    <th> 充值日期 </th>
                </tr>
                @foreach (var perm in Model)
                {
                    <tr class="">
                        <td>@perm.UserName.</td>
                        <td>@perm.Money</td>
                        <td>@perm.Balance</td>
                        <td>@perm.Before</td>
                        <td> @perm.OperateDate</td>
                    </tr>
                }
            </tbody>
        </table>
    
        
        <div class="text-center">
            @Ajax.Pager(Model, new PagerOptions { PageIndexParameterName = "id", ContainerTagName = "ul", CssClass = "pagination", CurrentPagerItemTemplate = "<li class="active"><a href="#">{0}</a></li>", DisabledPagerItemTemplate = "<li class="disabled"><a>{0}</a></li>", PagerItemTemplate = "<li>{0}</li>" }).AjaxOptions(a => a.SetUpdateTargetId("articles"))
        </div>
    </div>

    自定义DTO

                var query = db.Rescores.AsQueryable();
                if (!string.IsNullOrWhiteSpace(title))
                    query = query.Where(a => a.RescoreName.Contains(title));
                if (!string.IsNullOrWhiteSpace(auditstate))
                {
                    int temp = Convert.ToInt32(auditstate);
                    query = query.Where(a => a.AuditState == temp);
                }
                var model = query.OrderByDescending(t => t.CreateDate).Select(x => new RescoreDTO
                {
                    RescoreID = x.RescoreID,
                    AuditState = x.AuditState,
                    CreateDate = x.CreateDate,
                    RescoreName = x.RescoreName,
                    RescoreType = x.RescoreType
                });
                PagedList<RescoreDTO> pageList = new PagedList<RescoreDTO>(model, id, 10);
                foreach (var x in pageList)
                {
                    x.ClassNV = GetClassNV(x.RescoreID, db);
                    x.RescoreType = GetDictionaryName(x.RescoreType, "zylb", db);
                }
                if (Request.IsAjaxRequest())
                    return PartialView("_AjaxResourceManage", pageList);
                return View(pageList);
  • 相关阅读:
    读取数据变JSON传值!
    YII2.0多条件查询升级版
    JS跳转页面方法
    yii的简单片段缓存
    我读过的最好的epoll讲解--转自”知乎“
    I/O多路复用详解
    ”open-close"prinple (OCP)
    获取本机的IPv4或者v6地址
    .Net 下未捕获异常的处理
    TCP断开连接的过程
  • 原文地址:https://www.cnblogs.com/wangyinlon/p/10905618.html
Copyright © 2011-2022 走看看