码迷,mamicode.com
首页 > Web开发 > 详细

照着书抄的购物网站

时间:2016-07-08 21:28:56      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

首先简单总结一下这次做网站的经验。

顺序是这样的:先进行需求分析→然后开始搭建Model→再开始搭建控制器框架→再建立view→建立数据库→完善网站

最主要的是model要规划好,然后就是在控制器框架,是写完整还是写大概,这是一个问题,这次人家的思维严密,所以没有错,但是我就不一定了。

然后就是是这次感觉作者对C#了解很深,熟练的运用了它的集合List,然后一些处理方法,让网站很简单。

先介绍一下对控制器传到页面的model强类型的处理。

建立model的时候

技术分享
[DisplayName("会员信息")]
[DisplayColumn("Name")]
public class Member
{
View Code

在类上面打上标签,然后就在页面中可以通过以下的方式读取

对传过来的list数据

@model IEnumerable<Shopping.Models.Product>

@Html.DisplayNameFor(model => model.ToList()[0])

对传过来的单个数据()

@model Shopping.Models.Product

@Html.DisplayNameFor(m => m)

而且对数据可以直接取用 new { ProductId = Model.Id}

 

Ajax和分页

在MVC中,对这两个用起来很简单

不过有点需要注意的是,对

<script src="~/scripts/jquery.unobtrusive-ajax.js"></script>的引用只能放在模板页才会有效果,很神奇

分页的页面中需要因引入就很多

@using PagedList
@using PagedList.Mvc

和样式

<link href="~/Content/PagedList.css" rel="stylesheet" />

在控制器中需要引入

using PagedList;

 

然后下面是在控制器中的代码

技术分享
//商品列表
        public ActionResult ProductList(int id=1, int p = 1)
        {
            var productCategory = db.ProductCategories.Find(id);
            if(productCategory != null)
            {
                var data = productCategory.Products.ToList();
                var pageDate = data.ToPagedList(pageNumber: p, pageSize: 10);
                return View(pageDate);
            }
            else
            {
                return HttpNotFound();
            }
        }
View Code

HTML中的代码

技术分享
@using PagedList
@using PagedList.Mvc
@model IEnumerable<Shopping.Models.Product>

@{
    ViewBag.Title = "ProductList";
}

<link href="~/Content/PagedList.css" rel="stylesheet" />
<h2>@Html.DisplayNameFor(model => model.ToList()[0])</h2>

<h3>您正在浏览【@Model.First().ProductCategory.Name】分类的商品:</h3>

@{
    var ajaxOption = new AjaxOptions()
    {
        OnSuccess = "AddToCartSuccess",
        OnFailure = "AddToCartFailure",
        HttpMethod = "Post"
    };
}

<script type="text/javascript">
    function AddToCartSuccess()
    {
        alert(添加购物车成功);
    }

    function AddToCartFailure(xhr)
    {
        alert(添加购物车失败(Http状态码: + xhr.status + ));
    }
</script>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Description)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Price)
        </th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.ActionLink(item.Name, "ProductDetail", new { id = item.Id})
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Description)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Price)
        </td>
        <td>
            @Ajax.ActionLink("添加购物车", "AddToCart", "Cart", new { ProductId = item.Id}, ajaxOption)
        </td>
    </tr>
}

</table>

@{ 
    var data = Model as IPagedList<Shopping.Models.Product>;
}
@Html.PagedListPager(list: data, generatePageUrl: page => Url.Action("ProductList", new { p = page}))
View Code

通过p相互联系起来

分页和Ajax就做好了

对于数据上下文


using System.Data.Entity;

 

public class ShoppingContext:DbContext
{
public ShoppingContext() : base("name=connstr")
{

}

 public DbSet<ProductCategory> ProductCategories { get; set; }

}

但是首先还是要用引入数据库的方式将EntityFramework之类的引用放进来

然后就可以很海参的使用EF了

好了,就总结到这里了。

 

照着书抄的购物网站

标签:

原文地址:http://www.cnblogs.com/dudeping/p/5654510.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!