3

取自index.cshtml

@model MvcMovie.Models.Movie

@{
    ViewBag.Title = "Details";
}

<h2>Details</h2>

<fieldset>
    <legend>Movie</legend>

    <div class="display-label">

为什么 Visual Studio 的 MVC 模板在视图中设置 ViewBag.Title 而不是在相应的控制器中?

在我看来,任何设置都应该在控制器中完成,任何获取都应该在视图中完成。你怎么看呢?

4

3 回答 3

7

因为ViewBag.Title然后在 Layout 文件 \Views\Shared\_Layout.cshtml 中使用 的值:

<title>@ViewBag.Title</title>
于 2013-06-18T13:06:28.913 回答
4

扩展 Fabio S 的答案 - 因为这<title>是一个演示概念。我认为在控制器(或业务逻辑)中完成设置并在视图中完成设置是一个很好的指南,但更重要的是视图关注表示,控制器成为视图之间的控制和中介模型和业务逻辑。如果我想查看最终 html 页面的标题设置在哪里,我会发现查看视图而不是控制器更直观,因为我认为标题是一个演示概念。

于 2014-01-08T21:04:36.497 回答
0

它在编码器上决定什么动作方法返回什么视图..所以你的控制器或动作方法可能只返回一个 JSON 对象或 HTTPResponseCode 在这种情况下没有必要在控制器或动作方法中设置标题..

它最终是一个展示的东西,因为您可能也不想在创建实体的视图上显示创建,而是您可能想说创建现在取决于操作方法和控制器。

于 2013-06-15T12:55:46.670 回答