Mvc里查询商品页面
/// <summary>
/// 商品小类筛选页面 GoodsTypeName ----------------SelectGoods--商品筛选 --图文
/// Home/SelectGoods
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult selectgoods(int id = , string pvlueIDs = null)
{
ViewBag.ReturnUrl = Request.Url;
#region -------------SelectGoods 商品筛选 --图文
if (id == )//商品小类ID为空
{
return HttpNotFound();
}
else //商品小类ID不为空
{
if (id != && pvlueIDs == null)//商品小类ID不等于0, 商品属性不为空
{
#region -------------首次请求
var vbv = from f in db.GoodsPropertys
where f.GoodsType.GoodsTypeID == id
orderby f.GoodsPropertyID
select f;
int sproCout = vbv.ToList().Count;
GoodsProperty[] sfArray = new GoodsProperty[sproCout];
for (int i = ; i < sproCout; i++)
{
sfArray[i] = new GoodsProperty();
sfArray[i].GoodsPropertyID = ;//盒子
}
GoodsType slg = db.GoodsTypes.Find(id);//转换
SKUtypebrandgoods sbg = new SKUtypebrandgoods();
sbg.SmallType = slg;//商品小类 #region -------------Linq
GoodsType middleType = db.GoodsTypes//商品中类
.Where(f => f.GoodsTypeID == id)
.Select(f => f.GoodsTypes)
.ToArray()[];
sbg.BigType = db.GoodsTypes//商品大类
.Where(f => f.GoodsTypeID == middleType.GoodsTypeID)
.Select(f => f.GoodsTypes)
.ToArray()[];
sbg.GoodsBrandLst = db.Goodss//商品品牌
.Where(f => f.GoodsTypeID == slg.GoodsTypeID)
.Select(f => f.GoodsBrand)
.Distinct()
.ToList();
sbg.GoodsProertyLst = db.GoodsPropertys//商品属性
.Where(f => f.GoodsType.GoodsTypeID == id)
.Select(f => f)
.ToList();
sbg.GoodsPropertyValueLst = db.GoodsPropertyValues.ToList();//所有商品属性值
sbg.Goodses = db.Goodss//商品
.Where(f => f.GoodsTypeID == id)
.Select(f => f)
.ToList();
#endregion
sbg.GproArray = sfArray;//商品属性数组 #region -------------取模分页
sbg.BrandID = ;
sbg.shelvesTimeArray = new string[];
sbg.shelvesTimeArray[] = "";//Url倒数第三位(所有商品排序)0:按上架时间降序,1:按上架时间升序,2:按价格升序,3:按价格降序,4:按好评,5:按销量;
sbg.shelvesTimeArray[] = "";//Url倒数第二位(商品仅显示有货)0:显示全部,1:仅显示有货;
sbg.shelvesTimeArray[] = "";//Url倒数第一位(商品分页)【所传过来的分页】
sbg.Goodses = sbg.Goodses
.Where(s => s.GoodsSKUs.Count > )
.OrderByDescending(f => f.GoodsAddTime)
.Select(f => f)
.ToList();//排序(只显示有goodsSku的商品)
int page = sbg.Goodses.Count;
if (page % == )//取模分页
{
page = page / ;
}
else
{
page = (page / ) + ;
}
sbg.page = page;//商品有多少页
sbg.Goodses = sbg.Goodses.Skip().Take().ToList();
#endregion return View(sbg); #endregion
}
else//都不为空
{
#region -------------二次请求---商品 GoodsType gds = db.GoodsTypes.Find(id);//转换 string[] strs = pvlueIDs.Split('-');//截断字符串 string[] str = strs.Take().ToArray();//品牌ID string[] strPro = strs.Skip().Take(strs.Length - ).ToArray();//从第二个到倒数第四个截断的字符串数组(包括倒数第四个) SKUtypebrandgoods sku = new SKUtypebrandgoods();//中间表 sku.shelvesTimeArray = strs.Skip(strs.Length - ).Take().ToArray();//Url后三位截断字符串赋值
sku.BrandID = Int32.Parse(str[]);//品牌ID
sku.GoodsBrandLst = db.Goodss//商品品牌
.Where(f => f.GoodsTypeID == gds.GoodsTypeID)
.Select(f => f.GoodsBrand)
.Distinct()
.ToList();
var pro = from f in db.GoodsPropertys
where f.GoodsType.GoodsTypeID == id
select f;
int ig = pro.ToList().Count;
GoodsProperty[] pros = new GoodsProperty[ig];
for (int i = ; i < ig; i++)
{
pros[i] = new GoodsProperty();
pros[i].GoodsPropertyID = int.Parse(strPro[i]);
}
sku.GproArray = pros; #region -------------商品Linq语句
sku.SmallType = gds;
GoodsType middleType = db.GoodsTypes//商品中类
.Where(f => f.GoodsTypeID == id)
.Select(f => f.GoodsTypes)
.ToArray()[];
sku.BigType = db.GoodsTypes//商品大类
.Where(f => f.GoodsTypeID == middleType.GoodsTypeID)
.Select(f => f.GoodsTypes)
.ToArray()[];
sku.GoodsProertyLst = db.GoodsPropertys//商品属性
.Where(f => f.GoodsType.GoodsTypeID == id)
.Select(f => f)
.ToList();
sku.GoodsPropertyValueLst = db.GoodsPropertyValues.ToList();//所有商品属性值
#endregion
var goodslst = db.Goodss//商品类别全部商品
.Where(f => f.GoodsTypeID == id)
.Select(f => f);
#region -------------商品属性值筛选
if (sku.BrandID > )
{
goodslst = goodslst
.Where(f => f.GoodsBrandID == sku.BrandID)
.Select(f => f);
}
foreach(var v in strPro)
{
if (v == "")
{
continue;//继续
}
else
{
int propertyValueID = int.Parse(v);
var pvgs = db.PropertyValueGoods
.Where(f => f.GoodsPropertyValueID == propertyValueID)
.Select(f => f);
goodslst = from f in goodslst
join s in pvgs
on f.GoodsID equals s.GoodsID
select f;
}
}
sku.Goodses = goodslst.Where(s => s.GoodsSKUs.Count > ).Distinct().ToList();
#endregion #region -------------商品排序筛选 if (sku.shelvesTimeArray[] == "")//Url倒数第三位(所有商品排序)0:按上架时间降序,1:按上架时间升序,2:按价格升序,3:按价格降序,4:按好评,5:按销量;
{
sku.Goodses = goodslst.OrderByDescending(f => f.GoodsAddTime).ToList();
}
else if(sku.shelvesTimeArray[] == "")
{
sku.Goodses = goodslst.OrderBy(f => f.GoodsAddTime).ToList();
}
else if (sku.shelvesTimeArray[] == "")
{
sku.Goodses = sku.Goodses
.OrderBy(f => f.GoodsSKUs.OrderBy
(fs => fs.GoodsNormalPrice)
.Select(fs => fs).ToArray()[]
.GoodsNormalPrice)
.Select(f => f)
.ToList();
}
else if (sku.shelvesTimeArray[] == "")
{
sku.Goodses = sku.Goodses
.OrderByDescending(f => f.GoodsSKUs.OrderBy
(fs => fs.GoodsNormalPrice)
.Select(fs => fs).ToArray()[]
.GoodsNormalPrice)
.Select(f => f)
.ToList();
}
else if (sku.shelvesTimeArray[] == "")//好评度
{ }
else if (sku.shelvesTimeArray[] == "")
{ }
else
{
return HttpNotFound();
}
#endregion #region -------------是否仅显示有货的商品
if (sku.shelvesTimeArray[] == "")//Url倒数第二位(商品仅显示有货)0:显示全部,1:仅显示有货;
{
}
else if (sku.shelvesTimeArray[] == "")
{
//商品库存数量 != Null
sku.Goodses = sku.Goodses
.Where(f => f.GoodsSKUs.Where(fs => fs.GoodsQty > ).Select(fs => fs).ToList().Count > )
.Select(f => f)
.ToList();
}
#endregion #region -------------商品分页
int page;
if (sku.Goodses.Count % == )
{
page = sku.Goodses.Count / ;
}
else
{
page = (sku.Goodses.Count / ) + ;
}
sku.page = page;
int currentPage = ;
string pageStr = sku.shelvesTimeArray[];
bool parseOk = int.TryParse(pageStr,out currentPage);
if(currentPage - <= )
{
sku.Goodses = sku.Goodses.Take().ToList();//表示第一页
}
else
{
sku.Goodses = sku.Goodses.Skip((currentPage - )*).Take().ToList();//商品分页当前页
} #endregion return View(sku); #endregion
}
}
#endregion
}
Mvc里查询商品页面的更多相关文章
- 在Asp.net MVC中访问静态页面
有时候由于一些特殊的需要,我们需要在MVC中访问HTML页面,假如您将这个页面放在Views中的话,去访问将会收到一个404,但是放在Views外面的目录则不受此限制. 那么我们就来解决View里面的 ...
- asp.net mvc异步查询
对于asp.net mvc异步查询 如何做MVC异步查询,做列表页面. 查询是项目中必不可少的工作,而且不同的项目不同的团队,都有自己的简单方法.Asp.net mvc 有自己独特的优势,下面是结合m ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
- 对于asp.net mvc异步查询
如何做MVC异步查询,做列表页面. 查询是项目中必不可少的工作,而且不同的项目不同的团队,都有自己的简单方法.Asp.net mvc 有自己独特的优势,下面是结合mvc实现一个产品列表的Demo. 问 ...
- 使用cookies查询商品详情
易买网项目完工,把一些新知识记录下来,以便以后查阅,也方便他人借阅.介绍使用cookies查询商品详情. 第一步:建立商品实体类. 第二步:连接Oracle数据库. 第三步:使用三层架构. 效果图如下 ...
- MVC设计模式-查询与删除
MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它把应用程序分成三个核心模块: 模型:模型是应用程序的主体部分,模型表示业务数据和业务逻辑. 一个 ...
- 零基础学习java------34---------登录案例,域,jsp(不太懂),查询商品列表案例(jstl标签)
一. 简单登录案例 流程图: 项目结构图 前端代码: <!DOCTYPE html> <html> <head> <meta charset="UT ...
- ASP.NET MVC 5 - 查询Details和Delete方法
在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...
- 记住 MVC里用formcollection接收form表单传来的值,表单属性必须有name为健!
记住 MVC里用formcollection接收form表单传来的值,input属性必须有name为健! 调了一晚上!! 写个日志记下!!
随机推荐
- codevs1039 数的划分
题目描述 Description 将整数n分成k份,且每份不能为空,任意两种划分方案不能相同(不考虑顺序). 例如:n=7,k=3,下面三种划分方案被认为是相同的. 1 1 5 1 5 1 5 1 1 ...
- hdu 1757 A Simple Math Problem_矩阵快速幂
题意:略 简单的矩阵快速幂就行了 #include <iostream> #include <cstdio> #include <cstring> using na ...
- 区间dp-hdu-4745-Two Rabbits
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4745 题目意思: 给n个环状的数,A.B两人沿相反的方向走,每单位时间走一步,要求相同时间两人到达相 ...
- 两年前实习时的文档——Platform学习总结
1 概述 驱动程序实际上是硬件与应用程序之间的中间层.在Linux操作系统中,设备驱动程序对各种不同的设备提供了一致的訪问接口,把设备映射成一个特殊的设备文件,用户程序能够像其它文件一样对设备文件进 ...
- 链接脚本之LMA VMA解释
链接脚本中的LMA和VMA是什么意思.这个问题纠结了一段时间,今天在看<ARM体系结构与编程>时,豁然开朗,写下自己的认识.分享例如以下: LMA:载入地址 位于存储器中的地址 LOAD ...
- C# 获取网站的 IIS 站点名称 ,获取站点当前连接数
System.Web.Hosting.HostingEnvironment.ApplicationHost.GetSiteName(); System.Management.ManagementObj ...
- document load 与document ready的区别
页面加载完成有两种事件 1.load是当页面所有资源全部加载完成后(包括DOM文档树,css文件,js文件,图片资源等),执行一个函数 问题:如果图片资源较多,加载时间较长,onload后等待执行的函 ...
- UVA 1312 Cricket Field
题意: 在w*h的坐标上给n个点, 然后求一个最大的矩形,使得这个矩形内(不包括边界)没有点,注意边界上是可以有点的. 分析: 把坐标离散化.通过两重循环求矩形的高,然后枚举,看是否能找到对应的矩形. ...
- Home键屏蔽
公司要开发一款智能终端,设备中预装了本公司开发的软件,但是为了避免用户进入Android系统的界面,这个时候我们就需要对其中的按键加以屏蔽,尤其是Home键,在普通的情况下,当我们点击Home按键的时 ...
- C#VS面向对象基础(二)
这里我们接着上一篇博客,继续学习用C#实现面向对象中的概念.这里学习下边几个,当然我们还是通过动物比赛的例子. 多态:表示不同的对象可以执行相同的动作,但是通过它们自己的实现代码来执行.这里需要将父类 ...