1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.Entity; 5 using System.Linq; 6 using System.Net; 7 using System.Web; 8 using System.Web.Mvc; 9 using LinqDemo3.Models; 10 11 namespace LinqDemo3.Controllers 12 { 13 public class ProductsController : Controller 14 { 15 private Model1 db = new Model1(); 16 17 // GET: Products 18 public ActionResult Index() 19 { 20 var products = db.Products.Include(p => p.Category).Include(p => p.Supplier); 21 return View(products.ToList()); 22 } 23 24 // GET: Products/Details/5 25 public ActionResult Details(int? id) 26 { 27 if (id == null) 28 { 29 return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 30 } 31 Product product = db.Products.Find(id); 32 if (product == null) 33 { 34 return HttpNotFound(); 35 } 36 return View(product); 37 } 38 39 // GET: Products/Create 40 public ActionResult Create() 41 { 42 ViewBag.CategoryID = new SelectList(db.Categories, "CategoryID", "CategoryName"); 43 ViewBag.SupplierID = new SelectList(db.Suppliers, "SupplierID", "CompanyName"); 44 return View(); 45 } 46 47 // POST: Products/Create 48 // 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关 49 // 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。 50 [HttpPost] 51 [ValidateAntiForgeryToken] 52 public ActionResult Create([Bind(Include = "ProductID,ProductName,SupplierID,CategoryID,QuantityPerUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLevel,Discontinued")] Product product) 53 { 54 if (ModelState.IsValid) 55 { 56 db.Products.Add(product); 57 db.SaveChanges(); 58 return RedirectToAction("Index"); 59 } 60 61 ViewBag.CategoryID = new SelectList(db.Categories, "CategoryID", "CategoryName", product.CategoryID); 62 ViewBag.SupplierID = new SelectList(db.Suppliers, "SupplierID", "CompanyName", product.SupplierID); 63 return View(product); 64 } 65 66 // GET: Products/Edit/5 67 public ActionResult Edit(int? id) 68 { 69 if (id == null) 70 { 71 return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 72 } 73 Product product = db.Products.Find(id); 74 if (product == null) 75 { 76 return HttpNotFound(); 77 } 78 ViewBag.CategoryID = new SelectList(db.Categories, "CategoryID", "CategoryName", product.CategoryID); 79 ViewBag.SupplierID = new SelectList(db.Suppliers, "SupplierID", "CompanyName", product.SupplierID); 80 return View(product); 81 } 82 83 // POST: Products/Edit/5 84 // 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关 85 // 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。 86 [HttpPost] 87 [ValidateAntiForgeryToken] 88 public ActionResult Edit([Bind(Include = "ProductID,ProductName,SupplierID,CategoryID,QuantityPerUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLevel,Discontinued")] Product product) 89 { 90 if (ModelState.IsValid) 91 { 92 db.Entry(product).State = EntityState.Modified; 93 db.SaveChanges(); 94 return RedirectToAction("Index"); 95 } 96 ViewBag.CategoryID = new SelectList(db.Categories, "CategoryID", "CategoryName", product.CategoryID); 97 ViewBag.SupplierID = new SelectList(db.Suppliers, "SupplierID", "CompanyName", product.SupplierID); 98 return View(product); 99 }100 101 // GET: Products/Delete/5102 public ActionResult Delete(int? id)103 {104 if (id == null)105 {106 return new HttpStatusCodeResult(HttpStatusCode.BadRequest);107 }108 Product product = db.Products.Find(id);109 if (product == null)110 {111 return HttpNotFound();112 }113 return View(product);114 }115 116 // POST: Products/Delete/5117 [HttpPost, ActionName("Delete")]118 [ValidateAntiForgeryToken]119 public ActionResult DeleteConfirmed(int id)120 {121 Product product = db.Products.Find(id);122 db.Products.Remove(product);123 db.SaveChanges();124 return RedirectToAction("Index");125 }126 127 protected override void Dispose(bool disposing)128 {129 if (disposing)130 {131 db.Dispose();132 }133 base.Dispose(disposing);134 }135 }136 }