留言簿

我要留言
留言搜索

2015-11-27 12:44  倪磊

不好意思,杨老师,问题问的不清楚。我把mvcpager放在局部视图中,Model的类型怎么设置?比如我有如下的数据模型
    public interface IEntity
    {
    }
    public partial class Course : IEntity
    {
        //属性
    }
    public partial class Teacher : IEntity
    {
        //属性
    }

_Pagination.cshtml  mvcpager部分视图如下:

@model PagedList<IEMS.Models.IEntity>
<div class="row">
    <div class="col-md-12">
        <div class="pull-left margin-top-10">共 @Model.TotalPageCount 页 @Model.TotalItemCount 条记录,当前为第 @Model.CurrentPageIndex 页</div>
        <div class="pull-right">
            @Html.Pager(Model, new PagerOptions
               {
                   PageIndexParameterName = "pageindex",
                   FirstPageRouteName = "Org_Default",
                   RouteName = "Paging",
                   FirstPageText="首页",
                   LastPageText="尾页",
                   PrevPageText = "上一页",
                   NextPageText = "下一页",
                   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>",
                   Id = "pagination"
               })
        </div>
    </div>
</div>

course 列表页如下:

@model PagedList<IEMS.Models.Course>
内容略
@Html.Partial("_Pagination", Model);

这里加载分页局部视图时报类型无法转换的错误,如下:
传入字典的模型项的类型为“Webdiyer.WebControls.Mvc.PagedList`1[IEMS.Models.Course]”,但此字典需要类型“Webdiyer.WebControls.Mvc.PagedList`1[IEMS.Models.IEntity]”的模型项。

也就是说我想要通过Model继承的方式达到公用分页局部视图,但是好像不行。当然这不是mvcpager的什么问题或bug,我这里只是求一个方案。
回复:公用那确实会有问题,不过您可以试试dynamic,但这样也就没有强类型Model那样的VS智能感知及编译时错误检查等功能了,错误只有运行时才能发现。谢谢!

2015-11-27 10:16  小何

改成参数名不一样了,还是不行,真的很奇怪,分页链接明明有那个cid的参数,通过url链接打开这个分页链接cid的值是没问题的,就是ajax分页碰见这奇怪的问题,cid的值好像在跳转的那一刻变成了0,找不到原因
回复:您好,这样的问题不调试是无法说清楚的,您需要学会使用浏览器开发者工具(F12)。谢谢!

2015-11-26 17:25  小何

杨老师,您好,请问我的问题是什么原因呢?
回复:已回复,谢谢!

2015-11-26 14:59  倪磊

杨老师你好,mvcpager如何放到局部视图里,然后通过Html.Partial引入到页面? 这样调整样式或者修改配置时就不用挨个页面去调了。
回复:您好,您现在放MvcPager放在局部视图中调用有什么问题吗?谢谢!

2015-11-25 21:26  小陈

杨老师你好,我做了一个手机站,在苹果系统的微信打开AspNetPager点页一页没反应,安卓是没有问题的,请问这是什么原因?
回复:您好,这个问题可能是苹果浏览器对ASP.NET的回发机制支持不太好的原因,您可以改为url分页就不会有这样的问题了。谢谢!

2015-11-25 09:34  小何

杨老师,您好!生成的分页链接里面有参数page和cid,如下:
http://localhost:42558/1111/blog/_articleajaxpagelist?cid=2&page=2
但是一进入到_articleajaxpagelist这个action的时候,cid却为0,
action 定义如下
public ActionResult _ArticleAjaxPageList(int cid = 0, int page = 1)
        {
            var query = new ArticleModel { AccountId = UserSession.LoginUserInfo.Account, CategoryID = cid };
            var list = ServerConfig.ArticleService.GetAll(query).ToPagedList(page, _pageSize);
            ViewBag.cid = cid;
            if (Request.IsAjaxRequest())
            {
                return PartialView("_ArticleAjaxPageList", list);
            }
            return View(list);
        }
请问这是什么原因
回复:应该是ViewBag的cid和url参数中的cid重复导致的,请把ViewBag的cid换为不同的属性名试试。谢谢!

2015-11-24 19:07  sun

杨老师您好,我用您的控件做了个例子,分以后,查询的数据有删除的功能,在第一次打开页面的时候,删除按钮是好用的,可以删除数据, 再点击下一页后, 删除的动作就不再执行我用js写的代码了,麻烦百忙之中帮忙看下问题。
<a href="@Url.Action("delete", "list", new { item.YHQFFD.ID })"   class="operaLink">


            $('.delete').on('click', function (e) {
                var $this = $(this);
                $.SmartMessageBox({
                    title: "删除!",
                    content: "您确认要删除该信息吗?",
                    buttons: '[否][是]'
                }, function (ButtonPressed) {
                    if (ButtonPressed === "是") {
                        $.ajax({
                            url: $this.attr('href'),
                            type: 'POST',
                            success: function (ret) {
                                if (ret.Status === 0) {
                                    $this.closest('tr').remove();
                                    Shopr.BigBox.Success(ret.Data);
                                } else {
                                    Shopr.BigBox.Error(ret.Data);
                                }
                            }
                        });
                    }
                });
                e.preventDefault();
            });
回复:您好,出现这个问题的原因很简单,Ajax分页后事件绑定失效,当然就不会再执行了,如果要在Ajax分页后仍然能使事件绑定有效,需要用类似于这样的方法:
$( "#dataTable tbody" ).on( "click", "tr", function() {
console.log( $( this ).text() );
});
。具体请参考jQuery文档。谢谢!

2015-11-23 18:02  Max

杨老师辛苦了!
最近使用分页控件,遇到一个问题,不知道其他人有没有遇到这样的问题,就是一个页面中有多个Ajax局部刷新,每个页面都有分页,只点一个页面的时候跳转就正确,但是在点其他页面的分页就会跳转到第一个页面,写了controller和action,但是请求的还是第一次像后台请求的action,不知道是不是使用方式有问题,希望杨老师有时间帮忙解答、指正。
回复:您好,示例中就有多个AajxPager分页的例子,而且有详细的用法说明。请参考一下。谢谢!

2015-11-23 14:22  小何

杨老师,你好!分页链接里面明明有参数page和另一个参数,但是进入controller里面却只有page参数,另一个参数为空,请问这是什么原因
回复:您是如何确认只有page一个参数的?请用浏览器开发者工具或http捕获工具(如Fiddler)进行调试检查。谢谢!

2015-11-23 10:50  132

data-urlformat 后面怎么传入多个参数?
回复:您好,很抱歉,不太明白您的意思。
;