留言簿

我要留言
留言搜索

2014-03-13 16:49  rxb

杨老师,我的mvc3.0的项目中用到您的ajaxhtml的get搜索分页时,在首页里(HomeController的index返回的首页视图)搜索后,调用ScheduleController中的SeachHotel的方法后返回到searchotel的视图时,在第一次搜索时可以分页并显示第一页的数据,可是为什么下一页后就是空白,取不到数据。

以下是SearchHotel方法
public ActionResult SearchHotel(string destination,string intime,string outtime,string keyword, int id = 1)
        {
            PagedList<Hotel> searchHotel;
            ViewData["destination"] = destination; ;
            ViewData["intime"] = intime;
            ViewData["outtime"] = outtime;
            ViewData["keyword"] = keyword;            
            string[] time1 = intime.Split(new char[] { '-' });
            string[] time2 = outtime.Split(new char[]{ '-' });
            DateTime inTime = new DateTime(int.Parse(time1[0]), int.Parse(time1[1]), int.Parse(time1[2]));
            DateTime outTime = new DateTime(int.Parse(time2[0]), int.Parse(time2[1]), int.Parse(time2[2]));
            searchHotel = PageController.SearchPager(destination, inTime, outTime, keyword, id);
            if (Request.IsAjaxRequest())
                return PartialView("_HotelPager", searchHotel);
            return View(searchHotel);
        }


public static PagedList<Hotel> SearchPager(string destination, DateTime intime, DateTime outtime, string keyword, int id)
        {
            //SearchHotelModel model = new SearchHotelModel();
            var hotel = (from t in hotelDB.Hotels
                        where
                          t.hotelName.Contains(keyword) &&
                          t.hotelAddress.Contains(destination)
                        orderby
                          t.hotelId
                        select t).AsQueryable();
            PagedList<Hotel> searchModel = hotel.ToPagedList(id, 3);
            return searchModel;
        }
请问下杨老师是怎么回事?
回复:您好,我也无法从代码中看出什么问题,您需要设置断点认真调试一下,看相应的参数是否正确传递到了controller的action方法中。谢谢!

2014-03-13 16:13  邓明

MvcPage2.0在ie8下会读取另外一个用户的数据
回复:您好,很抱歉,没有看懂您的意思,如果是数据问题,应该是MvcPager本身没有关系,需要您自己调试检查。谢谢!

2014-03-13 13:16  多个Model在view

有一个model1,model1里包含多个model,
public class model1{
public model2 models{set;get;}
public model3 model3{set;get;}
} 

我在action里有是
{
model1.model2=db.model2.tolist();
model1.model2=db.model3..OrderBy(a=>a.ID).ToPagedList(id,6);
return view(model1);
}
在view页
@model PagedList<model1>
错误	7	未能找到类型或命名空间名称“PagedList”(是否缺少 using 指令或程序集引用?)
回复:您好,您需要引入Webdiyer.WebControls.Mvc命名空间,@using Webdiyer.WebControls.Mvc。示例中是在View目录下的web.config中全局引入的,请注意一下。谢谢!

2014-03-12 16:54  ray

如果当前页是第一页,我需要前一页按钮不显示,当前页是最后一页,后一页按钮不显示,怎么办?
回复:您好,如果是AspNetPager,设置ShowDisabledButtons为false,如果是MvcPager,设置PagerOptions.ShowDisabledPagerItems,详情请参考帮助文档。谢谢!

2014-03-12 09:18  墨鱼

请问 aspx 网站分页  点击下一页网页显示不出来 是什么原因啊
回复:您好,从您的描述中无法知道是什么错误引起的,您需要仔细调试才能找出可能的原因。谢谢!

2014-03-11 20:10  蜀山

老师您好!
   请问MvcPager控件中ajax分页怎么传多个参数到Controller?求教!
回复:您好,请看上一个问题的答复。谢谢!

2014-03-11 19:48  younger

您好!
      请问MVCPager怎么传两个参数给Controller?
回复:您好,不太明白您的意思,MvcPager的相应构造函数中都有routeValues等参数,您可以通过这些参数来传递。谢谢!

2014-03-10 14:00  charmers

你好,使用AJAX Post方式,示例代码是
        public ActionResult AjaxSearchPost(int id = 1)
        {
            var model = DemoData.AllArticles.OrderByDescending(a => a.PubDate).ToPagedList(id, 8);
            if (Request.IsAjaxRequest())
                return PartialView("_AjaxSearchPost", model);
            return View(model);
        }
想实现首次打开不加载数据,我修改成:
        public ActionResult AjaxSearchPost()
        {
            return View();
        }
为什么实现不了呢?(Post后点页码提交不到[HttpPost])

回复:您好,首次打开不加载数据会导致MvcPager以为只有一页数据,默认情况下控件不会显示,因此Ajax相关的属性也没有加载,导致其后的Ajax查询失败,请将PagerOptions的AutoHide设置为false,这样即使在没有数据的情况下Ajax属性也会被加载。谢谢!
===================================
添加AutoHide=false不起作用,只是多了“页索引超出范围”。点击页码后,仍然是到[Get]的Action
回复:您好,首次打开不加载数据就是没有数据要分页,您得进行查询获得数据后才能分页。谢谢!

2014-03-09 16:42  黑子

杨涛老师,我想问一下,这个mvc4.5的如何实现多参数分页呢?我试过好多次,看了你的demo也没实现功能,代码:
routes.MapRoute("listtwo", "list/vod-{cid}-{name}-p{paged}.html",
                new { controller = "list", action = "more", cid = UrlParameter.Optional, name = UrlParameter.Optional, paged = 1 },
                new { action = "more"},
                new string[] { "Hth.Web.Controllers" });
 @Html.Pager(Model, new PagerOptions { ShowPageIndexBox = true, PageIndexBoxType = PageIndexBoxType.DropDownList,PageIndexParameterName = "paged",CssClass = "pages", ShowGoButton = false, FirstPageRouteName = "Default" }, "listtwo")


我主要是想实现这种
第一页的时候list/vod-{cid}-{name}.html
第二页或者后面list/vod-{cid}-{name}-p{2...N}.html
现在怎么弄第一页都必须有list/vod-{cid}-{name}-p1.html
怎么实现呢?
回复:您好,您需要定义一个Url格式为list/vod-{cid}-{name}.html的路由并赋给FirstPageRouteName,确保此路由优先级高于listtwo,请参考示例中“首页Url SEO”的源码及说明。谢谢!

2014-03-08 17:48  rui

杨老师,您好,我用NoDbDemo/AjaxSearchHtmlPost测试,
我想用<div id="ad">百强县</div>
 $(function () {
        $("#ad").click(function () {
            var i = '百强县';//var i=$(this).html();
            $.ajax({
                url: '/NoDbDemo/AjaxSearchHtmlPost',
                data: { 'title': i,
                    'author': "",
                    'source': ""
                }, 
                type: "POST",
                success: function (data) {
                    alert("success");
                }
            });
        });
    });   
这样调用 是成功的,在ajaxSearchPostResult方法也能根据传过去的条件查出正确的结果,比如总条数,但到页面时数据是没变的,是因为没有刷新的结果 ,  @Html.Partial("_AjaxSearchPost", Model)这里没有刷新,我想做无刷新的条件查询分布,请问要怎样改呢。
回复:您好,您这样自己通过Ajax提交的查询和MvcPager是没有交互性的,MvcPager无法知道您的查询条件,所以也无法为您正确分页,您需要设置MvcPager的DataFormId为查询条件所在表单的ID,然后在您的Ajax方法中提交此表单。谢谢!
;