留言簿

我要留言
留言搜索

2018-01-29 21:31  阿斌

杨老师你好,今天碰到一个非常奇怪的问题,目前使用的是您的最新版本的MVCPAGER ,具体情况如下:第一次进入页面的时候,如果页面数据多于1页,再点击搜索后,然后再点击下一页是正常的。如果首次加载,数据少于两页,也就是说只有一页,或者没有数据,那我点击搜索之后,就算出来的数据是多于2页的,再点下一页,提交到后台的请求 就自动变为get请求,而不是post请求,导致页面404.
备注:我使用的是 ajax表单的分页
具体代码如下:
        public ActionResult Order(int id = 1)
        {
            ViewBag.IsAdmin = CurrentUser.U_IsAdmin;
            var qry = _orderService.TableNoTracking;
            if (!CurrentUser.U_IsAdmin)
            {
                qry = qry.Where(x => x.O_UserID == CurrentUser.U_UserID);
            }

            //qry = qry.Where(x => x.O_State == 0);

            DateTime s = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
            DateTime e = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));

            qry = qry.Where(x => x.O_SubTime >= s);
            qry = qry.Where(x => x.O_SubTime <= e);
            var model = qry.OrderByDescending(a => a.O_SubTime).ToPagedList(id, PageManage.PageSize);
            if (Request.IsAjaxRequest())
                return PartialView("_AjaxOrderPost", model);
            return View(model);

        }

        [HttpPost]
        public ActionResult Order(string orderid, int? state,string starttime,string endtime, int id = 1)
        {
            return AjaxSearchPost(orderid, state, starttime, endtime, id);
        }

        [HttpPost]
        public ActionResult AjaxSearchPost(string orderid, int? state, string starttime, string endtime, int id = 1)
        {
            ViewBag.IsAdmin = CurrentUser.U_IsAdmin;
            var qry = _orderService.TableNoTracking;
            if (!CurrentUser.U_IsAdmin)
            {
                qry = qry.Where(x => x.O_UserID == CurrentUser.U_UserID);
            }
            if (!string.IsNullOrEmpty(orderid))
            {
                Int64 order_id = Convert.ToInt64(orderid.Trim());
                qry = qry.Where(x => x.O_OrderID == order_id);
            }
            if (state !=
回复:您好,出现这个问题的原因是只有一页或没有数据时,MvcPager默认不显示,也就导致分页jQuery插件不能绑定事件,只需要将PagerOptions.AutoHide设为false即可。谢谢!

2018-01-25 20:10  Xiaojun

杨老师,MvcPager既然有NET Core版本,有没有想过为这个版本添加TagHelper形式的部署方式?
回复:您好,本来就是tag helper,两种呈现方式都支持,请注意看示例。谢谢!

2018-01-23 21:22  学生

杨老师您好,请问设置了InsertionMode.InsertAfter 后没有效果是为什么呢?想实现加载更多,即在原有数据基础上再加载新数据。
 @Ajax.Pager(Model, new PagerOptions
           {
               Id = "divPage",
               ShowNumericPagerItems = false,
               //ShowPrevNext = false,
               ShowFirstLast = false,
               NextPageText = "查看更多>>",
               PrevPageText = "上一页",
               //NextPageText = "下一页",
               //ShowDisabledPagerItems = false,
               //AlwaysShowFirstLastPageNumber = false,
               PageIndexParameterName = "pageIndex",
               NumericPagerItemCount = 3,
               CssClass = "moregoods",
               ShowMorePagerItems = true
           }, new MvcAjaxOptions { UpdateTargetId = "ProductListDiv", LoadingElementId = "nonedata", LoadingElementDuration = 1000, InsertionMode = InsertionMode.InsertAfter })
回复:您好,这个属性默认值是Replace而且不能修改,请看帮助文档中的说明:http://www.webdiyer.com/mvcpager/docs/mvcajaxoptions/。谢谢!

2018-01-23 17:06  椰楠

<div id="nonedata" class="nonedata" style="display: none;">
                正在获取数据,请稍候...
            </div>
            <div style="clear: both;">
            </div>
            <div class="foot">
                @Ajax.Pager(Model, new PagerOptions
           {
               Id = "divPage",
               ShowNumericPagerItems = false,
               ShowPrevNext = false,
               ShowFirstLast = false,
               NextPageText = "查看更多>>",
               ShowDisabledPagerItems = false,
               AlwaysShowFirstLastPageNumber = false,
               PageIndexParameterName = "pageIndex",
               NumericPagerItemCount = 1,
               CssClass = "moregoods",
           }, new MvcAjaxOptions { UpdateTargetId = "ProductListDiv", LoadingElementId = "nonedata", LoadingElementDuration = 1000, InsertionMode = InsertionMode.InsertAfter })
            </div>
生成不报错,但从前端代码看,生成以下代码,请问是为什么
data-ajax-update="#ProductListDiv" data-invalidpageerrmsg="页索引无效" data-outrangeerrmsg="页索引超出范围" data-pagecount="1" data-pageparameter="pageIndex" data-pagerid="Webdiyer.MvcPager" data-urlformat="/PagerDemo?pageIndex=__pageIndex__" id="divPage"></div>
<!--MvcPager v3.0.1 for ASP.NET MVC 4.0+ © 2009-2015 Webdiyer (http://www.webdiyer.com)-->
回复:您好,生成的代码就是对的,您有什么问题?谢谢!

2018-01-21 22:22  一个学生

我想爬一个用您的分页插件的网站,发现该网站只能使用ie来使用,例如Chrome点击其他页无反应,打开源代码,结果是form的提交来改变页数或者显示条数,我模拟提交后,还是返回第一页的数据,请问这是什么原理?谢谢您。
回复:您好,您说的页面应该是用了默认的Postback分页,也就是提交表单回发分页,ASP.NET回发机制会对提交的ViewState的值进行验证,我不知道您是如何模拟的,如果没有提交隐藏表单中的ViewState,那么验证就会失败,因此也就不会执行服务器端分页事件,您可以在网上搜索一下asp.net回发验证机制了解一下。谢谢!

2018-01-13 16:19  大喷菇

杨老师好
我这边使用 mvcpager3 做分页,使用HtmlForm搜索(Post)检索数据,并使用了页码下拉框做快速跳转,首次加载时下拉框中的页码是正确的,但是通过查询条件,查询以后快速跳转下拉框的数据就不会改变了,比如:默认加载页面时,有10页数据,快速跳转下拉框有1~10,但是查询以后,只剩2页数据了,快速跳转下拉框中还是1~10并没有变成1~2,请杨老师给予解答。
回复:您好,您使用的是Ajax分页模式吧?在Ajax分页模式下启用查询功能时,这是个已知的bug,因为本人Javascript技术水平有限,尝试过解决这个问题但没有找到好的办法,在当前这种模式下,Ajax查询后是不会更新下拉框的值以及分页的总记录数的,所以会出现这种问题,建议您禁用页索引下拉框或改用普通路由分页方式。谢谢!

2018-01-05 15:57  luck

请问AspNetPagerCN-7.5.1\Demo\App_Data文件夹里面的数据库文件是MS SqlServer多少版本的?
回复:您好,时间长了忘记了,专门下载检查一下,App_Data目录下有两个不同版的数据库文件,NORTHWND.MDF是SQL Server 2012,NORTHWND2.MDF是SQL Server 2008 R2。谢谢!

2018-01-04 16:51  zhrong

杨老师您好,我参考您的AjaxForm搜索(Get)分页的示例,发现点击搜索的时候是ajax请求,点击分页的时候不是ajax请求。一直没有找到原因,源码发您gmail邮箱了,主题是:zhrong-AjaxForm搜索(Get)分页,点击分页不是ajax请求。不胜感激!
回复:您好,两个问题:1、MvcPager必须放在分部视图中;2、必须在主页面用@{Html.RegisterMvcPagerScriptResource();}来引用脚本插件;请参考示例和帮助文档。谢谢!

2018-01-02 22:46  wheeky

我发现使用MVC PAGER3.0 采用普通FORM POST查询,然后AJAX分页,点一次查询后,再点分页就不会把FORM的查询条件POST到后台,只有当我点击查询2次后,才会有效,代码与你的示例类似,没有发现问题。
回复:您好,请看上一条留言的回复,我测试过没有您说的这个问题,您需要检查一下自己的代码是否有问题。谢谢!

2018-01-02 21:34  wheeky

我使用你的MVCPAGER3.0,但发现你网站的示例代码都是用了2层分部视图,而我不想使用2层分部视图,只想用一个分部视图就是实现AJAX,我使用后发现如果我HTMLFORM POST 查询了2次后,分页可以正常使用,如果只是查询了一次,再点AJAX分页就会取不到查询的FORM的表单内容。

请帮忙看一下,谢谢!
代码贴出来太长了,就不贴了
回复:您好,示例中有不使用分部视图进行Ajax分页的例子,就是Ajax局部加载,只是查询的例子被从菜单中注释掉了,但源代码中仍有,就是AjaxSearchPartialPost这个Action,我测试过了,没有您说的问题,查询一次后分页,查询参数可以正确传递到后台,您的问题应该是您自己的代码问题,请参考示例调试检查。谢谢!
;