当前位置: 移动技术网 > IT编程>开发语言>.net > .NET架构MVC5编程实现简易购物网站

.NET架构MVC5编程实现简易购物网站

2018年09月29日  | 移动技术网IT编程  | 我要评论

衢州互联星空,御龙在天家族养马,王全书

1.首先先创建一个数据模型类product;

\
namespace mvcgw.models
{
    public class product
    {
        public int id { get; set; }
        [display(name = "商品名称")]
        [required(errormessage = "必填")]
        [stringlength(60, minimumlength = 3, errormessage = "必须是[3,60]个字符")]
        public string title { get; set; }
        [display(name = "商品类型")]
        [required]
        public string genre { get; set; }
        [display(name = "商品简介")]
        [required]
        public string description { get; set; }
        [display(name = "商品售价")]
        [range(1, 10000)]
        [datatype(datatype.currency)]
        public decimal price { get; set; }
        [display(name = "上新日期")]
        [datatype(datatype.date)]
        public datetime releasedate { get; set; }
        [display(name = "商品图片")]
        [required]
        public string photo { get; set; }
    }

还有shoppingcar(购物车)类和order(订单)类,

为了在中保存图片,保存的是图片路径;

2.创建数据库上下文类;

public class productdbcontext : dbcontext
    {
        public dbset<product> products { get; set; }
        public dbset<shoppingcar> shoppingcars { get; set; }
        public dbset<order> orders { get; set; }
    }

3.创建数据库连接串;

//web.config文件: 
<connectionstrings>
    <add name="productdbcontext"
             connectionstring="data source=(localdb)\v11.0;
                                           attachdbfilename=|datadirectory|\products.mdf;
                                            attachdbfilename=|datadirectory|\shoppingcars.mdf;
                                             attachdbfilename=|datadirectory|\orders.mdf;
                                           integrated security=true"
             providername="system.data.sqlclient" />
  </connectionstrings>

4。添加视图

笔者的网站使用了layout布局,这样代码利用率高

@model ienumerable<mvcgw.models.product>
@{
    viewbag.title = "index";
    layout = "~/views/shared/_layout.cshtml";
}
<style>
    .big {
        margin: 0px auto 0px auto;
        width: 940px;
        height: 516px;
       /* background-image: url('/images/tjsp_border.jpg'); /*推荐商品背景图片*/
        padding: 45px 20px 21px 20px; /*背景图片框有一定的厚度*/
    }


    .flower {
        width: 225px;
        height: 235px;
        float: left; /*图片并排*/
        padding: 12px;
        /*border:1px #cccccc solid;text-align:center;*/
        overflow: hidden;
    }


    .flower_desc {
        height: 25px;
        line-height: 30px;
        text-align: center;
        font-size: 12px;
    }
</style>
<p>
    @using (html.beginform("index", "product", formmethod.get))
    {
        <p>
            宝贝类型:@html.dropdownlist("bbgenre", "all")
            <input type="submit" value="查询" />
        </p>
    }


</p>
<p class="big">
    @foreach (var m in model)
    {
        <p class="flower">
            <p><img src="/@m.photo"width="170" height="160" /></p>
            <p class="flower_desc">@m.title.trim() &nbsp;&nbsp;@m.price 元 </p><br />
            @html.actionlink("加入购物车", "putcar", new { id = m.id }) |
            @html.actionlink("详情", "details", new { id = m.id }) 
             
        </p>
    }
</p>

可使用应用list模板

5.创建控制器productcontroller,实现实现业务逻辑

编写index,

public actionresult index(string bbgenre)
        {
            var genrelst = new list<string>();//实现按宝贝类型查询,控制器传递数据给select的方法
            var genreqry = from d in db.products orderby d.genre select d.genre;
            genrelst.addrange(genreqry.distinct());    //去重
            viewbag.bbgenre = new selectlist(genrelst);//设置的viewbag属性值一定要与select的name保持一致
            var rs1 = from m in db.products
                     select m;
            if (!string.isnullorempty(bbgenre))
            { rs1 = rs1.where(x => x.genre == bbgenre); return view(rs1); }
            var rs = from m in db.products
                     where new int[] { 1,2,3,4,5,6,7,8 }.contains(m.id)
                     select m;
   return view(rs); //向视图传递的数据是对象rs
                             /*viewdata.model = rs;
                             return view();*/
        }
 public actionresult putcar(int id)
        {
            //会员登录后才能购物
            if (session["username"] == null)
                return redirecttoaction("login", "product");
 
            var rec1 = db.products.find(id);
            //默认数量sl=1,在生成订单前可以修改                 
            shoppingcar rec2 = new shoppingcar { username = (string)session["username"],  title = rec1.title, price = rec1.price,genre=rec1.genre, photo = rec1.photo, num = 1 };
            db.shoppingcars.add(rec2);
            db.savechanges();
           return redirecttoaction("index");
        }
        public actionresult shoppingcar()
        { decimal i = 0;
            var sc = from m in db.shoppingcars select m;


            if (session["username"] != null)
            {
                string name = (string)session["username"];
                sc = sc.where(s => s.username.contains(name));


                foreach (var item in sc)
                {
                    i += item.price;
                }
                viewbag.data = i;//后台算出总价传值给前台视图
                return view(sc);
            }
            else return redirecttoaction("login", "product");
        }
     public actionresult besure()//实现确认购买生成订单,向订单类中添加已购买商品数据,购物车清空
        {
            var sc = from m in db.shoppingcars select m;


            if (session["username"] != null)
            {
                string name = (string)session["username"];
                sc = sc.where(s => s.username==name) ;


                foreach (var rec1 in sc)
                {
                                     
                    order rec2 = new order { username = (string)session["username"], title = rec1.title, price = rec1.price, genre = rec1.genre, photo = rec1.photo, num = 1 };
                    db.orders.add(rec2);
                     
                }
                foreach (var rec3 in sc)
                {
                    
                    db.shoppingcars.remove(rec3);
              
                }
                db.savechanges();
                return redirecttoaction("order");
            }
            else return redirecttoaction("login", "product");


  }
        public actionresult order()
        {
            decimal i = 0;
            var sc = from m in db.orders select m;


            if (session["username"] != null)
            {
                string name = (string)session["username"];
                sc = sc.where(s => s.username.contains(name));


                foreach (var item in sc)
                {
                    i += item.price;
                }
                viewbag.data1 = i;
                return view(sc);
            }
            else return redirecttoaction("login", "product");
}
\

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网