您的位置:首页 > 编程语言 > ASP

[ASP.NET MVC 5 - 04] 控制器与模型及视图的交互

2015-01-14 14:55 337 查看
控制器负责从模型中获取数据,然后传递给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来实现,这里不再赘述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: