// 搜索商品
		public List<Product> SearchProduct(ProductSearchInfo info)
		{
			var query = from product in WebSiteDB.MyNorthwind.Products.AsQueryable()
						select product;

			if( info.CategoryId > 0 )
				query = query.Where(p => p.CategoryID == info.CategoryId);

			if( string.IsNullOrEmpty(info.SearchWord) == false )
				query = query.Where(p => p.ProductName.Contains(info.SearchWord));


			return query.OrderBy(x => x.ProductName).GetPagingList<Product>(info);
		}
		public object ShowProductPicker(int? categoryId, string searchWord, int? page)
		{
			ProductSearchInfo info = new ProductSearchInfo();
			info.CategoryId = categoryId.HasValue ? categoryId.Value : 0;
			info.SearchWord = searchWord ?? string.Empty;
			info.PageIndex = page.HasValue ? page.Value - 1 : 0;
			info.PageSize = AppHelper.DefaultPageSize;


			ProductPickerModel data = new ProductPickerModel();
			data.SearchInfo = info;
			data.List = BllFactory.GetProductBLL().SearchProduct(info);
			data.CategoryList = BllFactory.GetCategoryBLL().GetList();

			return new PageResult("/Pages/Style1/Controls/ProductPicker.cshtml", data);
		}
		public object LoadModel(int? categoryId, int? page)
		{
			string papeUrl = this.GetTargetPageUrl("Products.aspx");

			if( this.IsStyle2 )
				// Style2 风格下,页面不需要绑定数据。数据由JS通过AJAX方式获取
				return new PageResult(papeUrl, null);


			ProductsPageModel result = new ProductsPageModel();
			result.Categories = BllFactory.GetCategoryBLL().GetList();

			if( result.Categories.Count == 0 ) {
				return new RedirectResult("/Pages/Categories.aspx");
			}

			// 获取当前用户选择的商品分类ID
			ProductSearchInfo info = new ProductSearchInfo();
			info.CategoryId = categoryId.HasValue ? categoryId.Value : 0;
			if( info.CategoryId == 0 )
				info.CategoryId = result.Categories[0].CategoryID;
			info.PageIndex = page.HasValue ? page.Value - 1 : 0;
			info.PageSize = AppHelper.DefaultPageSize;


			result.ProductInfo = new ProductInfoModel(
						result.Categories, new Product { CategoryID = info.CategoryId });
			result.PagingInfo = info;
			result.CurrentCategoryId = info.CategoryId;
			result.RequestUrlEncodeRawUrl = HttpUtility.UrlEncode(this.HttpContext.Request.RawUrl);


			// 加载商品列表
			result.Products = BllFactory.GetProductBLL().SearchProduct(info);

			return new PageResult(papeUrl, result);
		}
		public List<Product> SearchProduct(ProductSearchInfo info)
		{
			return DbHelper.FillListPaged<Product>("SearchProduct", info);
		}
		public object List(ProductSearchInfo pagingInfo)
		{
			pagingInfo.CheckPagingInfoState();

			List<Product> List = BllFactory.GetProductBLL().SearchProduct(pagingInfo);
			var result = new GridResult<Product>(List, pagingInfo.TotalRecords);
			return new JsonResult(result);
		}