public ActionResult List(int id) { int tpid= Convert.ToInt32(Request.QueryString["tpid"]); //int d =Convert.ToInt32( Request.QueryString["s"]); //1.EF的查询方法,实际创建的是 某个实体类的代理类,代理类 继承于 该 实体类。 Models.Article stu = db.Articles.First(); int pageIndex = id; int pageSize = 3; //2.1根据页码 获取分页数据(使用DTO学员实体类 内部不存在循环属性 -- 关于使用DTO类的时候注意,类名不要和EF实体类一样) List<Models.DTO.ArticleDTO> list = db.Articles.Where(s=>s.TypeID==tpid).OrderByDescending(s=>s.id).Skip((pageIndex - 1) * pageSize).Take(pageSize) //将EF查出的 EF实体集合 转成 DTO实体集合,并返回 .ToList().Select(s => s.ToDto()).ToList(); //2.2获取总行数 int rowCount = db.Articles.Count(); //2.3计算总页数 int pageCount = Convert.ToInt32(Math.Ceiling((rowCount * 1.0) / pageSize)); //2.4将数据 封装到 PagedDataModel 分页数据实体中 Models.PagedDataModel<Models.DTO.ArticleDTO> dataModel = new Models.PagedDataModel<Models.DTO.ArticleDTO>() { PagedData = list, PageCount = pageCount, PageIndex = pageIndex, PageSize = pageSize, RowCount = rowCount }; //2.5将分页数据实体 封装到 Json标准格式实体中 Models.JsonModel jsonModel = new Models.JsonModel() { Data = dataModel, Msg = "成功~", Statu = "ok", BackUrl = "" }; //重要:JavaScriptSerializer 无法识别 被序列化的 对象里 各种属性是否存在 循环依赖 //【所以,我们不能使用 jss 去序列化 EF实体对象A !】 //因为 jss 会 循环 EF实体对象A 里的每个属性,想要根据此属性 生成对应的Json字符串,但是,EF实体A 的外键(导航)属性如果被访问,则会自动去数据库获取数据,而这个导航属性 对应的实体类B 中可能又包含指向实体A的类型,那么,EF又会去加载 A的数据,然后A里有包含B........陷入死循环........... //System.Web.Script.Serialization.JavaScriptSerializer jsS = new System.Web.Script.Serialization.JavaScriptSerializer(); //string json = jsS.Serialize(jsonModel); //2.6生成 json格式数据,此Json方法默认只接收 Post请求,如果要接收 GEt请求,则需要加第二个参数 return Json(jsonModel, JsonRequestBehavior.AllowGet); }
public ActionResult Link() { //Models.Link stu = db.Links.First(); List<Models.DTO.LinkDTO> list = db.Links.OrderByDescending(s => s.id) .ToList().Select(s => s.ToDto()).ToList(); Models.PagedDataModel<Models.DTO.LinkDTO> dataModel = new Models.PagedDataModel<Models.DTO.LinkDTO>() { PagedData = list }; Models.JsonModel jsonModel = new Models.JsonModel() { Data = dataModel, Msg = "成功~", Statu = "ok", BackUrl = "" }; return Json(jsonModel, JsonRequestBehavior.AllowGet); }
public ActionResult List() { //1.EF的查询方法,实际创建的是 某个实体类的代理类,代理类 继承于 该 实体类。 //Models.Article stu = db.Articles.First(); //2.1根据页码 获取分页数据(使用DTO学员实体类 内部不存在循环属性 -- 关于使用DTO类的时候注意,类名不要和EF实体类一样) List<Models.DTO.ArticleDTO> list = db.Articles.OrderByDescending(a =>Guid.NewGuid()).Take(3) //将EF查出的 EF实体集合 转成 DTO实体集合,并返回 .ToList().Select(s => s.ToDto()).ToList(); //2.4将数据 封装到 PagedDataModel 分页数据实体中 Models.PagedDataModel<Models.DTO.ArticleDTO> dataModel = new Models.PagedDataModel<Models.DTO.ArticleDTO>() { PagedData = list }; Models.JsonModel jsonModel = new Models.JsonModel() { Data = dataModel, Msg = "成功~", Statu = "ok", BackUrl = "" }; return Json(jsonModel, JsonRequestBehavior.AllowGet); }
public ActionResult Top() { Models.Article stu = db.Articles.First(); List<Models.DTO.ArticleDTO> list = db.Articles.OrderByDescending(s => s.ClickTimes).Take(8) .ToList().Select(s => s.ToDto()).ToList(); Models.PagedDataModel<Models.DTO.ArticleDTO> dataModel = new Models.PagedDataModel<Models.DTO.ArticleDTO>() { PagedData = list }; Models.JsonModel jsonModel = new Models.JsonModel() { Data = dataModel, Msg = "成功~", Statu = "ok", BackUrl = "" }; return Json(jsonModel, JsonRequestBehavior.AllowGet); }