Mvc里查询商品页面

/// <summary>

/// 商品小类筛选页面 GoodsTypeName ----------------SelectGoods--商品筛选 --图文

/// Home/SelectGoods

/// </summary>

/// <param name="id"></param>

/// <returns></returns>

public ActionResult selectgoods(int id = 0, string pvlueIDs = null)

{

ViewBag.ReturnUrl = Request.Url;

#region -------------SelectGoods 商品筛选 --图文

if (id == 0)//商品小类ID为空

{

return HttpNotFound();

}

else //商品小类ID不为空

{

if (id != 0 && 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 = 0; i < sproCout; i++)

{

sfArray[i] = new GoodsProperty();

sfArray[i].GoodsPropertyID = 0;//盒子

}

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()[0];

sbg.BigType = db.GoodsTypes//商品大类

.Where(f => f.GoodsTypeID == middleType.GoodsTypeID)

.Select(f => f.GoodsTypes)

.ToArray()[0];

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 = 0;

sbg.shelvesTimeArray = new string[3];

sbg.shelvesTimeArray[0] = "0";//Url倒数第三位(所有商品排序)0:按上架时间降序,1:按上架时间升序,2:按价格升序,3:按价格降序,4:按好评,5:按销量;

sbg.shelvesTimeArray[1] = "0";//Url倒数第二位(商品仅显示有货)0:显示全部,1:仅显示有货;

sbg.shelvesTimeArray[2] = "1";//Url倒数第一位(商品分页)【所传过来的分页】

sbg.Goodses = sbg.Goodses

.Where(s => s.GoodsSKUs.Count > 0)

.OrderByDescending(f => f.GoodsAddTime)

.Select(f => f)

.ToList();//排序(只显示有goodsSku的商品)

int page = sbg.Goodses.Count;

if (page % 24 == 0)//取模分页

{

page = page / 24;

}

else

{

page = (page / 24) + 1;

}

sbg.page = page;//商品有多少页

sbg.Goodses = sbg.Goodses.Skip(0).Take(24).ToList();

#endregion

return View(sbg);

#endregion

}

else//都不为空

{

#region -------------二次请求---商品

GoodsType gds = db.GoodsTypes.Find(id);//转换

string[] strs = pvlueIDs.Split(‘-‘);//截断字符串

string[] str = strs.Take(1).ToArray();//品牌ID

string[] strPro = strs.Skip(1).Take(strs.Length - 4).ToArray();//从第二个到倒数第四个截断的字符串数组(包括倒数第四个)

SKUtypebrandgoods sku = new SKUtypebrandgoods();//中间表

sku.shelvesTimeArray = strs.Skip(strs.Length - 3).Take(3).ToArray();//Url后三位截断字符串赋值

sku.BrandID = Int32.Parse(str[0]);//品牌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 = 0; 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()[0];

sku.BigType = db.GoodsTypes//商品大类

.Where(f => f.GoodsTypeID == middleType.GoodsTypeID)

.Select(f => f.GoodsTypes)

.ToArray()[0];

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 > 0)

{

goodslst = goodslst

.Where(f => f.GoodsBrandID == sku.BrandID)

.Select(f => f);

}

foreach(var v in strPro)

{

if (v == "0")

{

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 > 0).Distinct().ToList();

#endregion

#region -------------商品排序筛选

if (sku.shelvesTimeArray[0] == "0")//Url倒数第三位(所有商品排序)0:按上架时间降序,1:按上架时间升序,2:按价格升序,3:按价格降序,4:按好评,5:按销量;

{

sku.Goodses = goodslst.OrderByDescending(f => f.GoodsAddTime).ToList();

}

else if(sku.shelvesTimeArray[0] == "1")

{

sku.Goodses = goodslst.OrderBy(f => f.GoodsAddTime).ToList();

}

else if (sku.shelvesTimeArray[0] == "2")

{

sku.Goodses = sku.Goodses

.OrderBy(f => f.GoodsSKUs.OrderBy

(fs => fs.GoodsNormalPrice)

.Select(fs => fs).ToArray()[0]

.GoodsNormalPrice)

.Select(f => f)

.ToList();

}

else if (sku.shelvesTimeArray[0] == "3")

{

sku.Goodses = sku.Goodses

.OrderByDescending(f => f.GoodsSKUs.OrderBy

(fs => fs.GoodsNormalPrice)

.Select(fs => fs).ToArray()[0]

.GoodsNormalPrice)

.Select(f => f)

.ToList();

}

else if (sku.shelvesTimeArray[0] == "4")//好评度

{

}

else if (sku.shelvesTimeArray[0] == "5")

{

}

else

{

return HttpNotFound();

}

#endregion

#region -------------是否仅显示有货的商品

if (sku.shelvesTimeArray[1] == "0")//Url倒数第二位(商品仅显示有货)0:显示全部,1:仅显示有货;

{

}

else if (sku.shelvesTimeArray[1] == "1")

{

//商品库存数量 != Null

sku.Goodses = sku.Goodses

.Where(f => f.GoodsSKUs.Where(fs => fs.GoodsQty > 0).Select(fs => fs).ToList().Count > 0)

.Select(f => f)

.ToList();

}

#endregion

#region -------------商品分页

int page;

if (sku.Goodses.Count % 24 == 0)

{

page = sku.Goodses.Count / 24;

}

else

{

page = (sku.Goodses.Count / 24) + 1;

}

sku.page = page;

int currentPage = 1;

string pageStr = sku.shelvesTimeArray[2];

bool parseOk = int.TryParse(pageStr,out currentPage);

if(currentPage - 1 <= 0)

{

sku.Goodses = sku.Goodses.Take(24).ToList();//表示第一页

}

else

{

sku.Goodses = sku.Goodses.Skip((currentPage - 1)*24).Take(24).ToList();//商品分页当前页

}

#endregion

return View(sku);

#endregion

}

}

#endregion

}

时间: 2024-10-25 07:41:03

Mvc里查询商品页面的相关文章

点击商品图片显示详细商品页面

1.点击商品链接: * 传递商品id. 2.编写Action: * 编写Action类,继承ActionSupport实现模型驱动接口. * 编写一个执行的方法. public class ProductAction extends ActionSupport implements ModelDriven<Product> { //用于接收数据的模型驱动 private Product product=new Product(); public Product getModel() { ret

使用cookies查询商品详情

易买网项目完工,把一些新知识记录下来,以便以后查阅,也方便他人借阅.介绍使用cookies查询商品详情. 第一步:建立商品实体类. 第二步:连接Oracle数据库. 第三步:使用三层架构. 效果图如下: 当我看中新疆牛肉干,商品点击时,进入查看商品详情页. 商品详情页: 核心代码如下: <% //创建商品业务逻辑对象 productBiz prodctbiz = new productBizImpl(); List<easybuy_product> productlist = prodc

在Asp.net MVC中访问静态页面

有时候由于一些特殊的需要,我们需要在MVC中访问HTML页面,假如您将这个页面放在Views中的话,去访问将会收到一个404,但是放在Views外面的目录则不受此限制. 那么我们就来解决View里面的HTML页面访问问题: 首先Views目录下有一个Web.config是用来管理本目录下文件的访问行为的,里面有个配置节handlers,默认是将所有的请求都指给MVC的处理引擎,那么在这里我们需要让他只处理指定的后缀,比如:.cshtml,那么该配置应该改为: <handlers> <re

MVC 访问静态html页面

在MVC模式下,默认在Views文件外的html页面可以访问,但是如果要访问Views里的静态页面,要怎么设置才能访问呢? 朋友说,那就需要修改View文件夹中的web.config属性了 <httpHandlers> <add verb="GET,HEAD" path="*.html" type="System.Web.StaticFileHandler"/> <add path="*" ver

一个可以添加商品、查询商品的程序,登录成功的话,再去操作,添加、查询商品,添加商品也是写在文件里面

#写一个可以添加商品.查询商品的这么程序#1.先登录,登录的用户名和密码都是写在文件里面的#1.读文件.字符串分割#2.登录成功的话,再去操作,添加.查询商品,添加商品也是写在文件里面#1.读写文件,# 字典添加元素,取元素,# str()强制类型转换,# eval()#用它把字符串转成字典'''{ 'mac':{ 'id':1, 'price':2222.22 }, 'iphone':{ 'id':2, 'price':22222 }} { 'mac':{ 'id':1, 'price':22

MVC里的部分视图PartialView

MVC里的部分视图PartialView,相当于用户控件, 用法和普通视图一样,代码如下: public ActionResult Top() { return PartialView(); } 但是在主页面里引用时,分两种: 1.只访问页面,不执行控制器的方法 @Html.Partial("Top") 2.先执行控制器方法,再执行页面 public ActionResult Left() { NewsBLL bll = new NewsBLL(); List<NewsModel

Spring.Net在ASP.NET Mvc里使用的一个小例子

就贴个小例子,就不注意格式了. 1.下载dll NuGet的下载地址:http://docs.nuget.org/docs/start-here/installing-nuget 在vs的NuGet里搜索spring.web.mvc,它会自动下载SpringNet的引用包. 安装完成之后你的项目会多三个引用,项目目录../packages文件夹下面也会多出这三个文件夹里面是SpringNet的文件. 2.写代码例子 很简单的例子.定义一个接口,一个对于接口的实现类. namespace MvcA

ASP.NET MVC 5 - 查询Details和Delete方法

原文:ASP.NET MVC 5 - 查询Details和Delete方法 在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Movie movie

我没发现Mvc里的 web.config 有什么用。

实验过程 由于 Mvc2+ 引入 Area ,导致文件夹结构发生变化. Mvc下的 web.config 所在的位置是: ~/Areas/MySystem/Views/Web.config 对应的请求的URL是: ~/MySystem/Home/Index 这时, 在根目录下添加 AppSetting 项: <add key="AdminUserId" value="LhlcAdministator"/> 在 ~/Areas/MySystem/Views