标签:
首先简单总结一下这次做网站的经验。
顺序是这样的:先进行需求分析→然后开始搭建Model→再开始搭建控制器框架→再建立view→建立数据库→完善网站
最主要的是model要规划好,然后就是在控制器框架,是写完整还是写大概,这是一个问题,这次人家的思维严密,所以没有错,但是我就不一定了。
然后就是是这次感觉作者对C#了解很深,熟练的运用了它的集合List,然后一些处理方法,让网站很简单。
先介绍一下对控制器传到页面的model强类型的处理。
建立model的时候
[DisplayName("会员信息")] [DisplayColumn("Name")] public class Member {
在类上面打上标签,然后就在页面中可以通过以下的方式读取
对传过来的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(); } }
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}))
通过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