留言簿

我要留言
留言搜索

2014-12-19 00:52  MVC菜鸟Roy

杨老师您好
我是MVC初学者,在学习mvc4的分页功能
MVCPager结合Bootstrap样式的时候
代码如下:
@Html.Pager(Model,new PagerOptions
{
    PageIndexParameterName = "pageindex",
    ShowPageIndexBox = false,
    ShowGoButton = false,
    ContainerTagName = "ul",
    PagerItemWrapperFormatString = "<li>{0}</li>",
    @CssClass="pagination",
})

出了个奇怪的问题 分页导航的右边出现了 页码数字 消不掉
请问如何能够解决呢
请不吝赐教
回复:您好,这是因为当前页默认不包含在任何html标签中,而bootstrap要求所有页索引都包含在li标签中,所以还需要设置PagerItemWrapperFormatString将当前页索引也包含在li中。下面是我的项目中用的PagerOptions的设置代码,您可以参考一下:
new PagerOptions { ShowFirstLast = false, ContainerTagName = "ul",PrevPageText = "上页",NextPageText = "下页",CssClass = "pagination", PagerItemsSeperator = "", PagerItemWrapperFormatString = "<li>{0}</li>", CurrentPagerItemWrapperFormatString = "<li class=\"active\"><a href=\"#\">{0}</a></li>" }
谢谢!

2014-12-18 21:36  coder

一个页面用2个mvcpager的时候会出现刷新,做不到无刷新,您例子里面也有这种情况,请问能解决么?
回复:您好,不知道您说的刷新是什么意思?请注意url中的hash(#)值改变并不等于刷新,示例中“多个AJax数据分页”这个例子就没有刷新,只是url中的hash值改变而已。谢谢!

2014-12-18 21:28  AJAX

Ajax.Pager搜索结果分页问题
搜索结果正常
但是点击页码直接跳转了。成了GET请求
用firbug调试没有看到任何JS错误

页面源码也生存是这样。与例子感觉没有问题
<div data-ajax="true" data-ajax-dataformid="#searchForm" data-ajax-method="Post" data-ajax-update="#Content" data-maxpages="116" data-mvcpager="true" data-pageparameter="id" data-urlformat="/Pro/Search/__id__" style="float:right">
控制器有标识。打断点搜索结果会进下面的控制器
[HttpPost]
public ActionResult Search

下面是搜索的视图  
@using (Ajax.BeginForm("Search", new RouteValueDictionary { { "id", "" } }, new AjaxOptions { UpdateTargetId = "Content", InsertionMode = InsertionMode.Replace }, new RouteValueDictionary { { "id", "searchForm" } }))
            {
....
}

下面是搜索结果的
  @Ajax.Pager(Model, new PagerOptions { PageIndexParameterName = "id", ShowPageIndexBox = true, PageIndexBoxType = PageIndexBoxType.DropDownList, ShowGoButton = false }, new MvcAjaxOptions { UpdateTargetId = "Content", HttpMethod = "Post", DataFormId = "searchForm" }, new { style = "float:right" })
       @section Scripts{@{Html.RegisterMvcPagerScriptResource();}}

不知为啥就是跳转而不进POST进去。不POST进去数据就会出错
有引用
  <script src="~/Scripts/jquery-1.7.1.min.js"></script>
        <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
回复:您好,从您帖出的的代码中没看出有什么问题,既然设置断点后能进入控制器的Search Action中,那么很可能是您的这个action代码有问题导致重新跳转,请检查一下。另外试试换个浏览器,比如Chrome,看是不是浏览器问题导致的。谢谢!

2014-12-18 17:30  张先生

我是非常非常敬佩您的忠实粉丝。

反馈的问题是:
aspnetpager 分页控件在移动终端使用频率较高的UC浏览器里无效,请问这个问题怎么解决?
回复:您好,我从没用过UC浏览器,不过即使桌面版的某些浏览器,比如以前的邀游,也对ASP.NET的postback回发支持不太好,移动端使用AspNetPager时,建议使用url分页方式。谢谢!

2014-12-18 15:52  i鱿鱼

可以不改变url参数实现ajax分页么?
回复:您好,现在的MvcPager在ajax分页时就不会改变url参数,而只改变url中的hash(#)值。谢谢!

2014-12-18 09:30  hym

http://www.webdiyer.com/mvcpager/demo/pageindexbox
这个里面的跳转输入框(PageIndexBoxType.TextBox) 的宽度要怎么设置呢?或者他的样式?我用了PageIndexBoxWrapperFormatString 也不行的。
我用的2.0.0.1版本 mvc5项目
谢谢!!
回复:这个很简单,比如您的MvcPager的CssClass是mypager,那么可以这样定义CSS来控制页索引输入文本框:.mypager input[type="text"]{width:60px;....}。下拉框以此类推。谢谢!

2014-12-17 23:00  luke

您好,
Ajax.Pager 分页时,我用的是您编译的DLL文件
@using Webdiyer.WebControls.Mvc
@model PagedList<string>
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<div id="articles">
    @foreach (var item in Model)
    {
        @item
        <br />
    }
</div>

@Ajax.Pager(Model, new PagerOptions { PageIndexParameterName = "id", ShowPageIndexBox = true, PageIndexBoxType = PageIndexBoxType.DropDownList, ShowGoButton = false }, new MvcAjaxOptions { UpdateTargetId = "articles", LoadingElementId = "loadingDiv", OnBegin = "$('#articles').fadeOut('slow')", OnComplete = "$('#articles').fadeIn('slow')" })
@section Scripts{@{Html.RegisterMvcPagerScriptResource();}}

可以确定是,页面没有脚本错误,但是每次点击分页的时候,都是做的跳转,也没有执行分页里面的ajax事件,弄了好久,还是没有找到问题的所在,希望您帮忙一下,不知道是不是少引用了js脚本,但是看你的说明,出了引用jquery之外,就是Html.RegisterMvcPagerScriptResource()注册脚本了
回复:您好,您用的是哪个版本的jQuery?MvcPager 2.0的Ajax分页要求jQuery 1.7以上,另外您是怎么确定没有脚本错误的?必须用正确的工具调试检查才可能发现,比如Chrome浏览器的开发者工具。另外您说的跳转具体是什么情况?是url完全变了还是只是url中hash(#)部分改变了?如果是后者,那就是正确的。不知道您的例子是否可以直接在公网上查看?如果可以的话告诉我网址我看一下。谢谢!

2014-12-17 16:12  bruce

建议老师把 IPagedList<T> 改为  IPagedList<out T> ,也就是加一个 out 关键字。我给您举一个例子,您就知道了。

前提:Student 类 继承 Person 类。

下面是 UCTester.cshtml 里面的代码:

@model IEnumerable<Person>

记录总数:@(Model == null ? 0 : Model.Count())


下面是 index.cshtml 里面的代码

@Html.Partial("UCTester", new List<Student>() { new Student() })


结果:上面的代码是可以运行成功的。


问题:如果把 UCTester.cshtml 里面的 Model 换成 IPagedList<Person> 就会报错。
回复:您好,非常感谢您的建议!很惭愧,我做.net这么多年,从不知道泛型接口也可以用out限定符,因为从没见过这样的例子,看了您的留言后查了一下MSDN才知道这个限定符和普通方法中的out限制符是完全不同的,不过我还没仔细研究,不知道这样是否有什么副作用。我会记下您的问题,考虑好后确定是否在下次升级时加上这个功能。谢谢!

2014-12-17 10:36  sys

请问一下杨老师,为什么我用MVCpager,在页面上输html.pager的时候没有智能提示,也没有用。
回复:您好,不知道您用什么版本的VS?我用VS2013有智能感知提示,比较老的VS可能需要相应的xml文件才行,AspNetPager中有这个文件,MvcPager没有生成这个文件,另外请检查一下看是否是您的VS设置的问题。谢谢!

2014-12-15 16:08  qq

杨老师你好,我用你的mvcpager1.5 的时候正常,2.0的时候 每次一点击第一页或者首页  镶嵌的母版页 就要加载一次,1.5的时候第一页有那个{controller}/{action}/1,我想问下2.0mvcpager第一页怎么设置{controller}/{action}/1
回复:您好,不知道您用哪种分页方式?MvcPager从1.5到2.0的变化非常大,您可能需要参考一下帮助和示例重新学习一下它的用法,至于首页的url,是通过PagerOptions.FirstPageRouteName来设置的。谢谢!
;