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

本文关键字:视图 控制器 ViewBag Studio Visual 设置 MVC 为什么 | 更新日期: 2023-09-27 18:18:36

摘自index.cshtml:

@model MvcMovie.Models.Movie
@{
    ViewBag.Title = "Details";
}
<h2>Details</h2>
<fieldset>
    <legend>Movie</legend>
    <div class="display-label">

为什么Visual Studio的MVC模板设置ViewBag。标题在视图,而不是在相应的控制器?

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

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

因为ViewBag.Title的值然后在布局文件'Views'Shared'_Layout.cshtml:

<title>@ViewBag.Title</title>

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

由编码器决定什么操作方法返回什么视图。所以你的控制器或操作方法可能会返回一个JSON对象或HTTPResponseCode在这种情况下在控制器或操作方法中设置标题是没有意义的。

它最终是一个呈现的东西你可能也不想在创建你实体的视图上显示说创建你可能想说创建这取决于动作方法和控制器。