控制器负责从模型中获取数据,然后传递给View进行展示,上一个章节我们讲到,使用EF之后,每一个实体类有一个DBContext类与之对应,这个类负责获取数据等工作,这时候,我们可以在Controller里面使用这个DBContext了,使用方式如下:
public class MoviesController : Controller
{
private MovieDBContext db = new MovieDBContext();
// GET: /Movies/
public ActionResult Index()
{
return View(db.Movies.ToList());
}
}
在这个类里面,我们有一个MovieDBContext的引用,这个引用负责去获取数据,转换成List。那么这个时候,我们就可以将这个Model传递给View了。View是可以接收List类型的Model的,这个已经十分清楚了。我们在之前的章节里面都有讨论。在View里面使用model的方式如下:
@model MvcMovie.Models.Movie
@{
ViewBag.Title = "Details";
}
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.ReleaseDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Genre)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<th>
@Html.DisplayFor(modelItem => item.Rating)
</th>
</tr>
}
这种使用方式非常方便清晰,view只需要关心展现的方式,所有的东西都在Model里面。当然,实际情况下,可能还会有更新,删除等操作。控制器里面的方法可能如下:
如详细信息
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
其他的例如更新,删除都可以通过DBContext来实现,这里不再赘述。