留言簿

我要留言
留言搜索

2019-12-02 15:37  JackeyLove

杨老师您好,我在使用mvc分页的时候发现一个问题。
我在布局页面引用了一个js文件,里面使用jQuery的符号$去定义了一个方法,第一次加载子页面时这个方法可以调用的,但是一旦点击页码(比如说点击第二页),整个子页面重新渲染之后,我自定义的js中的方法就失效了。
请问怎么在分页子页面支持布局页的js引用呢?
回复:您好,这个问题应该和用$符号定义方法没有关系,如果您的方法是绑定到DOM元素上的,分页的分页视图页面通过Ajax加载后,除非用jQuery的on方法,否则新页面中的DOM元素就不会被绑定,所以看起来象是您的方法失效了,您可以看一下MvcPager脚本插件源代码中页索引元素click事件的绑定方法,谢谢!

2019-11-14 15:28  投入巨额

老师您好,请问:
我的MVC项目在views里右键浏览器查看任何一个页面都能正常访问到预设控制器(/account/login),但重装系统后右键任意页面都会显示http://localhost:37632/account/login/Views/任意文件/任意页面.cshtml
路由似乎不起作用了,找不到原因,你能帮我分析下原因吗?
谢谢!
回复:您好,没有见过这样的问题,感觉您的VS没有安装相应的ASP.NET MVC开发组件,请您在VS的添加/删除组件中进行确认。谢谢!

2019-11-14 13:21  沈先生

杨老师 用了你的 MvcPager进行局部刷新分页,可是我在局部分页添加的a 标签 点了没有任何反应
主页面
@using (Ajax.BeginForm("Business", null, new AjaxOptions
{
    UpdateTargetId = "MVCpager",
    HttpMethod = "Get"
}, new Dictionary<string, object> {
    { "id", "searchForm" },{ "class","well well-sm"}
}))
{
    <div class="form-inline" style="text-align:center;">
        <span>企业名称:</span><input type="text" name="unitName" id="unitName" class="form-control" />
        <input type="submit" value="搜索(S)" accesskey="S" class="btn btn-default" />
    </div>
}

<div id="MVCpager">
    @Html.Partial("_JifenList", Model)
</div>
@{Html.RegisterMvcPagerScriptResource();}
局部页面 
<ul class="nav navbar-nav">
    @{foreach (var item in Model)
        {
            <li class="col-xs-4" style="text-align:center;">
                <a href="http://www.baidu.com"><img src="~/Images/projects/@item.ImgPath" style="width:95%" /></a>
                <h3>
                    @Html.ActionLink(item.UnitName, "Index", "Home")
                </h3>
                <p>@item.UnitMsg</p>
            </li>
        }}
</ul>
<div class="col-xs-12" style="margin-bottom:20px;">
    @Ajax.Pager(Model, new PagerOptions{
    PageIndexParameterName = "PageIndex",    
    CurrentPagerItemTemplate = "<span class=\"spanx\" >{0}</span>",
    NumericPagerItemTemplate = "<span class=\"spanx\" >{0}</span>",
    HorizontalAlign = "Center",
    FirstPageText = "<span class=\"spanx\" >首页</span>",
    LastPageText = "<span class=\"spanx\" >尾页</span>",
    NextPageText = "<span class=\"spanx\" >下一页</span>",
    PrevPageText = "<span class=\"spanx\" >上一页</span>"
}, new MvcAjaxOptions { UpdateTargetId = "MVCpager", DataFormId = "searchForm", HttpMethod = "Get" })
回复:您好,出现这样的问题很可能是两个原因:1、没有引入jQuery脚本库和MvcPager脚本插件,或者引用路径错误;2、页面上有其它脚本错误,导致Ajax请求失败;请用浏览器开发者工具调试检查。网站后台有点问题,最新留言没显示出来,今天才看见,回复迟了请原谅!谢谢!

2019-10-12 10:52  sam

交流一个小问题:
因为我的数据比较大。差不多有两千万条路径。如果用存储过程分页效果不是很好。打开差不多要3到4秒。我现在想是一次性把数据用list缓存到redis.在每次打开直接读取redis,用你这个分页控件分页展现。但是发布就算是用了缓存,用你控件进行分页。发现速度并没有快。和当时在数据库查询分页的速度差不多。不知你有没有想过这方法优化。看缓存分页怎么样能更快展现出来。
回复:您好,这是数据获取问题,和分页控件本身是没有直接关系的,我不知道您把数据缓存后是如何分页的,用的是哪个分页控件?无论是MvcPager还是AspNetPager,您都可以使用自己的数据获取逻辑,谢谢!

2019-10-11 17:33  陈

老师你好:
mvcpager这个分页方式中
var model = db.Articles.OrderByDescending(a => a.PubDate).ToPagedList(id, 5);

这个ToPagedList是不是取数据库的数据就是直接取出1-5条?
还是先要取出全部数据,再用这个取出1-5条数据
回复:您好,这取决于您的数据提供程序,如果您用EF和sql server,那么分页是在数据库端实现的,也就是只取出5条数据,谢谢!

2019-10-05 16:57  jacky

杨老师,我现在把项目升级为.net core 3.0,在
.net core 3.0中使用Html.Pager时输出html内容被截断,查看服务器日志显示“
Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.”,
我在您的github也提交了该问题 https://github.com/Webdiyer/MvcCorePager/issues/4。
回复:您好,谢谢您的反馈,是Html.Pager方法存在这个问题还是taghelper也有相同的问题?最近还在忙.net framework的项目,没功夫研究.net core,所以没有注意到您说的问题,我会抽空测试更新一下,当然如果您也可以提交PR。谢谢!

2019-09-18 15:45  ak

我参考“查询结果url”分页的代码写了一个查询列表页,没有查询条件或者第一次输入查询条件的时候都可以正常得到结果,当我变更输入条件的时候,点击查询按钮发现查询条件又变成的第一次输入的值,比如我第一次输入标题关键词“文峰”,得到正确结果,我把文峰二字换成“人民”二字,点击查询按钮后发现关键词还是“文峰”二字,结果也还是第一次查询出的结果。这是怎么回事?文本框的viewstate和页面的viewstate都关掉也是这样。
下面是我查询按钮事件代码
protected void btnfind_Click(object sender, EventArgs e)
    {
        _title=tit.Text.Trim();
        _classid=ddlclassid.SelectedValue;
        _t1=ksrq.Text.Trim();
        _t2=jsrq.Text.Trim();

        string newurl = "news_list.aspx?tit=" + _title + "&cid=" + _classid + "&t1=" +  _t1 + "&t2=" +  _t2;
        Response.Redirect(newurl);
        Response.End();
    }
回复:您好,这应该是您查询条件传递的问题,您可以断点调试检查一下上面代码中生成的url是什么,另外如果用url分页查询的话,没必要用服务器端form,用普通form通过get方式提交就可以了。谢谢!

2019-09-05 11:21  李紫齐

杨老师您好。我这边是用到了ASP控件Gridview显示数据,但是查询时条件比较多,是通过多表连接,四五个条件的筛选得出要的数据,在结合您的ASPNET pager插件时遇到一点困难,这样类型的例子您有吗,有的话回复一下网址,谢谢您的帮助,另外再提一个小建议,能不能把ASPNET pager插件与Gridview结合的例子也放到一个菜单里,个人觉得Gridview还是很常用的。
回复:您好,用什么控件显示数据和AspNetPager分页控件没有任何关系,GridView只是用来显示数据,AspNetPager负责分页,两者是完全独立的,只要获取当前页数据并把数据绑定到GridView上即可,不知道您有什么困难?示例中url分页用的就是GridView,请可以参考一下:http://www.webdiyer.com/aspnetpager/demos/urlpaging.aspx。谢谢!

2019-08-26 12:39  HUTAO

$.ajax({
            type: "get",
            data: { vipdir: 'hei' },
            url: "/xxx/xxx",
            success: function (data) {                
                $("#votecase").html(data);
                @{ Ajax.LoadMvcPagerScript(); }
            }
        })
我首次加载数据是通过ajax请求的,通过动态注册MvcPager客户端jqurey插件也分页成功了。后面想重新ajax请求数据,并且传递的是另外一个vipdir值,但是我通过把Webdiyer对象undefined掉重新注册MvcPager客户端jqurey插件后,换页的时候还是请求之前的url,并且总是携带vipdir=hei的参数,但我明明换了vipdir的值。不知道是不是第一次注册MvcPager客户端jqurey插件后就缓存了对象,导致后面重新注册也无效
回复:您好,分页链接是通过当前url(或者自定义的Action和Controller及RouteData)以及url参数生成的,和注册jQuery插件没有关系。谢谢!

2019-08-22 10:00  刘海勤

老师您好!
我还是刚才那个问怎么爬http://222.143.24.250:98/MonResData.aspx?showpro=1&cityId=
上面数据的那个人。刚才看了您主页上的留言,我猜您应该是网页设计的老师吧;非常抱歉老师问您这样格格不入的问题;我们正在做研究,非常需要收集各省份的污染数据;河南的数据整理得最齐全,可惜我一直爬取不下来;对不起老师我比较初级,只会用八爪鱼和python,很迫切的需要老师的指点,再次感谢您!
回复:您好,我是做asp.net开发的,但这个网站不是我设计的,也和我没有关系,只是它的分页功能用了我的分页控件而已,这个页面查询结果是用Ajax显示的,和一般的页面显示方式不同,抓取确实有点麻烦,我也没做过网页抓取,八爪鱼和python也不熟,实在抱歉帮不上您的忙,谢谢!
;