using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Movies.Models;
namespace Movies.Controllers
{
//LocalDB的增删改查方法
public class MoviesController : Controller
{
private MovieDBContext db = new MovieDBContext();
// GET: /Movies/主页面
public ActionResult Index()
{
//查询全部
return View(db.Movies.ToList());
}
// GET: /Movies/Details/5 电影详细
public ActionResult Details(int? id)
{
////参数不正确,直接抛出对应的HttpStatusCodeResult结果
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
//根据id进行查询,查询出来的结果放在Movie类的Movie对象里
Movie movie = db.Movies.Find(id);
//如果一个电影没有找到,返回HttpNotFound()
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
// GET: /Movies/Create添加一条新电影,返回一个视图
public ActionResult Create()
{
return View();
}
// POST: /Movies/Create
[HttpPost]
[ValidateAntiForgeryToken]
//在添加电影的视图里获取值并添加到数据库,添加成功返回主页面
public ActionResult Create([Bind(Include="ID,Title,ReleaseDate,Genre,Price")] Movie movie)
{
if (ModelState.IsValid)
{
db.Movies.Add(movie);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movie);
}
// GET: /Movies/Edit/5 修改电影详细,返回一个修改界面的视图,并把查出数据movie用强类型传达到界面
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
// POST: /Movies/Edit/5
// 为了防止“过多发布”攻击,请启用要绑定到的特定属性,有关
// 详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。
[HttpPost]
[ValidateAntiForgeryToken]
//在修改视图里进行修改,这是修改方法,修改后返回主界面。强类型传数据
public ActionResult Edit([Bind(Include="ID,Title,ReleaseDate,Genre,Price")] Movie movie)
{
if (ModelState.IsValid)
{
db.Entry(movie).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movie);
}
//控制器返回一个删除的视图,并把查出数据movie用强类型传达到界面
// GET: /Movies/Delete/5 删除电影
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
// POST: /Movies/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
//删除的方法,删除后直接返回主界面
public ActionResult DeleteConfirmed(int id)
{
Movie movie = db.Movies.Find(id);
db.Movies.Remove(movie);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}
@*强类型声明,后面是引用的命名空间*@
@model Movies.Models.Movie
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<div>
<h4>Movie</h4>
<hr />
@*<dl>
标签定义了定义列表(definition list)。
<dl>
标签用于结合
<dt> (定义列表中的项目)和
<dd>
(描述列表中的项目)。*@
<dl class="dl-horizontal">
<dt>
@*主页里的列名*@
@Html.DisplayNameFor(model => model.Title)
</dt>
<dd>
@Html.DisplayFor(model => model.Title)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ReleaseDate)
</dt>
<dd>
@Html.DisplayFor(model => model.ReleaseDate)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Genre)
</dt>
<dd>
@Html.DisplayFor(model => model.Genre)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Price)
</dt>
<dd>
@Html.DisplayFor(model => model.Price)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.ID }) |
@Html.ActionLink("Back to List", "Index")
</p>