Beispiel #1
0
        /// <summary>
        /// 首次加载、列表操作、翻页、排序、刷新、搜索查询、Ajax请求树
        /// </summary>
        /// <param name="pagingModel"></param>
        /// <returns></returns>
        public override ActionResult Index([ModelBinder(typeof(PagingModelBinder))] PagingModel pagingModel)
        {
            var type = Request.Params["type"];

            Response.Cache.SetOmitVaryStar(true);
            SelectProductsViewModel pvm = new SelectProductsViewModel();

            ViewBag.Sort = pagingModel.SortOptions;
            var parentId   = Request.Params["parentId"];
            var parentCode = Request.Params["parentCode"];

            Category categoryModel = new Category();

            if (String.IsNullOrWhiteSpace(parentId))
            {
                pvm.CategoriesTree = categoryModel.GetList(p => p.ParentId == null);
            }

            var expr = LambdaHelper.BuildLambdasOr <Product>(pagingModel.QueryFields, QueryMethods.Contains, pagingModel.Query);

            if (String.IsNullOrWhiteSpace(parentCode))
            {
                pvm.ProductsList = model.GetPagedList(pagingModel, expr);
            }
            else
            {
                var predicate = PredicateBuilder.True <Product>();
                switch (type)
                {
                case "Brands":
                    predicate = predicate.And(f => f.Brand.Code.StartsWith(parentCode)).And(expr);
                    break;

                case "Categories":
                    predicate = predicate.And(f => f.Category.Code.StartsWith(parentCode)).And(expr);
                    break;

                default:
                    predicate = predicate.And(f => f.Category.Code.StartsWith(parentCode)).And(expr);
                    break;
                }
                pvm.ProductsList = model.GetPagedList(pagingModel, predicate);
            }

            if (Request.IsAjaxRequest())
            {
                if (Request.HttpMethod == "GET")
                {
                    return(PartialView("_Index", pvm));
                }
                else
                {
                    return(Json(new SuccessActionResult("Ok", pvm.CategoriesTree)));
                }
            }

            return(View("Index", pvm));
        }
Beispiel #2
0
        public override ActionResult Query([ModelBinder(typeof(PagingModelBinder))] PagingModel pagingModel)
        {
            Response.Cache.SetOmitVaryStar(true);
            SelectProductsViewModel pvm = new SelectProductsViewModel();
            Category categoryModel      = new Category();

            ViewBag.Sort         = pagingModel.SortOptions;
            ViewBag.Query        = pagingModel.Query;
            pagingModel.PageSize = 10;

            var parentId   = Request.Params["parentId"];
            var parentCode = Request.Params["parentCode"];

            if (String.IsNullOrWhiteSpace(parentId))
            {
                pvm.CategoriesTree = categoryModel.GetList(p => p.ParentId == null);
            }
            else
            {
                Int32 pId = Int32.Parse(parentId);
                pvm.CategoriesTree = categoryModel.GetList(p => p.ParentId == pId);
            }

            var expr = LambdaHelper.BuildLambdasOr <Product>(pagingModel.QueryFields, QueryMethods.Contains, pagingModel.Query);

            if (String.IsNullOrWhiteSpace(parentCode))
            {
                pvm.ProductsList = model.GetPagedList(pagingModel, expr);
            }
            else
            {
                var predicate = PredicateBuilder.True <Product>();
                predicate        = predicate.And(f => f.Category.Code.StartsWith(parentCode)).And(expr);
                pvm.ProductsList = model.GetPagedList(pagingModel, predicate);
            }

            if (Request.HttpMethod == "GET")
            {
                return(PartialView("_Query", pvm));
            }

            //默认是PUT
            return(PartialView("Query", pvm));
        }