public CiResult <ItemPageResult> PartialList(ItemPageModel model) { // 不允許cache var result = mainServie.GetPartialList(model); return(result); }
/// <summary> /// 分頁 for ajax /// </summary> /// <param name="model">The model.</param> /// <returns></returns> public ActionResult GetPageList(ItemPageModel model) { if (!Request.IsAjaxRequest() && !ApplicationHelper.IsLocal) { return(ErrorPage()); //404 } return(Partial(model)); }
public ActionResult Partial(ItemPageModel model) { //search必須有關鍵字 if (model.ViewName == "Search_Page" && string.IsNullOrWhiteSpace(model.SearchString)) { return(ErrorPage()); //404 } var result = mainServie.GetPartialListByCache(model); return(PartialView(ViewName("Item", model.ViewName), result.Data)); }
/// <summary> /// 取得列表、部分內容 by cache /// </summary> /// <param name="model">The model.</param> /// <returns></returns> public CiResult <ItemPageResult> GetPartialListByCache(ItemPageModel model) { var result = new CiResult <ItemPageResult>(); var cacheHelper = new CacheHelper(); //get cache if (!string.IsNullOrEmpty(model.CacheName)) { var chacheName = $"{ApplicationHelper.ClientID}_item_{model.CacheName}"; result.Data = cacheHelper.Get <ItemPageResult>(model.CacheName); } //set cache if (result.Data?.DataResult == null) { result = GetPartialList(model); if (result.IsSuccess && !string.IsNullOrEmpty(model.CacheName)) { cacheHelper.Set(model.CacheName, result.Data); } } return(result); }
/// <summary> /// 取得列表、部分內容 /// </summary> /// <param name="model">The model.</param> /// <returns></returns> public CiResult <ItemPageResult> GetPartialList(ItemPageModel model) { var result = new CiResult <ItemPageResult>(); try { //search if (!string.IsNullOrWhiteSpace(model.SearchString)) { model.SearchString = HttpUtility.UrlDecode(model.SearchString); model.SearchString = _Check.RelpaceBadCharacters(model.SearchString); //取structure: 包含Article, 排除Banner、Category if (string.IsNullOrEmpty(model.StructureJson) && !string.IsNullOrEmpty(model.SearchString)) { var articleStructure = structureService.GetList(ItemType.Article, new List <ItemType> { ItemType.Banner, ItemType.Category }); model.StructureJson = _Json.ModelToJson(articleStructure.Data.Select(x => x.ID)); } } //有routeName: 先取分頁參數 if (!string.IsNullOrEmpty(model.RouteName)) { var listResult = GetList(model.RouteName); if (listResult.IsSuccess) { model.StructureJson = listResult.Data.ItemPageModel.StructureJson; model.CategoryJson = listResult.Data.ItemPageModel.CategoryJson; model.SortColumn = listResult.Data.ItemPageModel.SortColumn; } else { result.Message = listResult.Message; return(result); } } if (string.IsNullOrEmpty(model.StructureJson)) { result.Message = "no StructureJson"; return(result); } var stuctureIDs = _Json.JsonToModel <List <Guid> >(model.StructureJson); var categoryIDs = _Json.JsonToModel <List <Guid> >(model.CategoryJson); var listData = service.GetListView( new PageParameter { IsPaged = model.IsPaged, CurrentPage = model.CurrentPage, PageSize = model.PageSize, SortColumn = model.SortColumn, IsDescending = model.IsDescending, DataLevel = model.DataLevel }, new ItemFilter { StructureIDs = stuctureIDs, CategoryIDs = categoryIDs, ExceptID = model.ExceptID, CoverType = model.CoverType, SearchString = model.SearchString, SearchType = model.SearchType, LangType = ApplicationHelper.DefaultLanguage, SelectEnabled = true, }); // Html Decode foreach (var item in listData.Data) { item.ItemLanguage.Content = HttpUtility.HtmlDecode(item.ItemLanguage.Content); item.ItemLanguage.TemplateText = HttpUtility.HtmlDecode(item.ItemLanguage.TemplateText); } var resultModel = new ItemPageResult { DataResult = new PageModel <ItemWebViewModel> { CurrentPage = listData.CurrentPage, TotalCount = listData.TotalCount, PageCount = listData.PageCount, DataStart = listData.DataStart, DataEnd = listData.DataEnd, Data = listData.Data.Select(x => TransModel(x)).ToList(), }, ItemPageModel = model }; result.Data = resultModel; result.IsSuccess = true; } catch (Exception e) { result.Message = e.Message; } return(result); }
/// <summary> /// Item private (from Get、Preview) /// </summary> /// <param name="oriData"></param> /// <param name="viewName">回傳view</param> /// <param name="itemType">指定類型</param> /// <returns></returns> public CiResult <object> ShowItem(ItemViewModel oriData, ref string viewName, ItemType?itemType = null) { var result = new CiResult <object>(); var data = TransModel(oriData); if (data == null) // || string.IsNullOrEmpty(structure.ViewName) { result.Message = "data not found"; return(result); //404 } #region 取得資料 //結構 var structure = structureService.Get(data.Item.StructureID); if (structure == null) // || string.IsNullOrEmpty(structure.ViewName) { result.Message = "structure not found"; return(result); //404 } //子結構(子分類) 文章後推一層 var subStructures = structureService.GetByParent(structure.ID.ToListObject(), ItemType.CategorySub); var subItemList = new PageModel <ItemViewModel>(); if (subStructures.Any()) { subItemList = service.GetListView( new PageParameter { SortColumn = SortColumn.Sort, IsPaged = false }, new ItemFilter { LangType = ApplicationHelper.DefaultLanguage, StructureIDs = subStructures.Select(x => x.ID).ToList(), CategoryIDs = data.Item.ID.ToListObject() }); } /****若有子分類,文章往後推一層****/ //子結構(多種文章) List <Guid> articleStructureID = (subStructures.Any()) ? subStructures.Select(x => x.ID).ToList() : structure.ID.ToListObject(); var articleStructures = structureService.GetByParent(articleStructureID, ItemType.Article); //分頁參數 var pageModel = new ItemPageModel(); if (articleStructures != null) { //所有層級Category都可 (父層分類可找到子層分類的文章) var CategoryIDs = data.Item.ID.ToListObject(); if (subStructures.Any()) { CategoryIDs.AddRange(subItemList.Data.Select(x => x.Item.ID).ToList()); } pageModel.CategoryJson = _Json.ModelToJson(CategoryIDs); pageModel.StructureJson = _Json.ModelToJson(articleStructures.Select(x => x.ID)); //sort if (articleStructures.All(x => x.RequiredTypes.HasValue((int)ContentType.Date))) { pageModel.SortColumn = SortColumn.Date; } else if (articleStructures.All(x => x.RequiredTypes.HasValue((int)ContentType.Sort))) { pageModel.SortColumn = SortColumn.Sort; } else { pageModel.SortColumn = SortColumn.CreateTime; } //人才庫 if (articleStructures.Any(x => x.ItemTypes.HasValue((int)ItemType.Q8People))) { pageModel.DataLevel = DataLevel.Normal; } } #endregion #region 回傳頁面 //// ckeditor //data.ItemLanguage.Content = HttpUtility.HtmlDecode(data.ItemLanguage.Content); //data.ItemLanguage.TemplateText = HttpUtility.HtmlDecode(data.ItemLanguage.TemplateText); //Banner //if (structure.ItemTypes.HasValue((int)ItemType.Banner) || itemType == ItemType.Banner) //{ // if (articleStructure == null) // return null; //404 // pageModel.ViewName = structure.ViewName; // pageModel.IsPaged = false; // return pageModel; //} // else //內容 Detail if (structure.ItemTypes.HasValue((int)ItemType.Article) || itemType == ItemType.Article) { viewName = structure.ViewName; result.Data = data; result.IsSuccess = true; return(result); } //列表 List else if (structure.ItemTypes.HasValue((int)ItemType.Category) || itemType == ItemType.Category) { //子結構可以是文章或次分類 if (!articleStructures.Any() && !subStructures.Any()) { return(result); //404 } pageModel.ViewName = structure.ViewName + "_Page"; var model = new ItemListModel { ItemViewModel = data, ItemPageModel = pageModel, }; if (subItemList.Data != null) { model.SubItemList = new List <ItemWebViewModel>( subItemList.Data?.Select(x => TransModel(x)).ToList() ); } viewName = structure.ViewName; result.Data = model; result.IsSuccess = true; return(result); } result.Message = "type not found"; return(result); //404 #endregion }