0

如果我有一个带有索引页面的控制器:

@model IEnumerable<MvcMovie.Models.Movie>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<table>
    <tr>
        <th>
            Title
        </th>
        ....
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        ....
    </tr>
}

</table>

使用有什么好处@model IEnumerable<Movie>?为什么我不能只ViewBag.Movies在控制器中定义并在索引页面中使用它?

4

2 回答 2

2

严格来说,你可以。但是,如果您将其他内容传递给视图,您将不会受益于 Intellisense 或直接的“这是错误类型”错误。如果您在编译时启用编译视图,您也不会发现错误(尽管默认情况下这是关闭的,所以它没有什么好处)。

于 2011-06-07T14:16:44.330 回答
2

使用的好处@model IEnumerable<Movie>是直接说清楚 - 这个视图是为了显示 (an) IEnumerable<Movie>。它可能会使用一些额外的信息(将存储在 中ViewBag),但这IEnumerable<Movie>正是它要显示的内容。这就是概念上的原因,这与MVC设计模式的概念有很大关系。当然,正如@Tridus 所说,还有技术原因。

于 2011-06-07T14:29:06.413 回答