asp.net-mvc - ViewBag 的真正意义是什么?

标签 asp.net-mvc viewbag

在理想的“hello world”中,应该将强类型模型传递回 View 。

return View(MyModel);

如果事情变得棘手,我们可以创建一个

View 模型
return View(MyViewModel);

前任。

MyViewModel
  • 我的模型

  • 我可以避免创建整个 ViewModel

    并部分使用 ViewBag。
    ViewBag.Foo = Foo;
    return View(MyModel);
    

    我意识到我会失去一些强类型功能

    (例如智能感知)

    在我的 View 中查看该 ViewBag。

    这种做法草率吗?反对MVC代表什么?

    如果是这样,ViewBag 的真正意义是什么?

    最佳答案

    我所知道的最有用的用例是带外数据,例如可能会显示在每个页面上的消息。操作过滤器可以有条件地将该消息添加到 ViewBag。您可能不想修改每个 View 模型类来保存不相关的消息,因为它可能是一个横切关注点。此类消息/小部件的一个示例是 Stack Overflows 中断公告。

    我不建议使用 ViewBag 而不是 View 模型。模型类方法具有典型的静态类型优势,而编写类的成本很低。

    关于asp.net-mvc - ViewBag 的真正意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19320471/

    相关文章:

    asp.net-mvc-4 - 在 MVC 4 的下拉列表中选择一个默认值

    asp.net-mvc-3 - ASP.NET MVC 3 中 ViewBag.Title 的替代方案

    asp.net-mvc - MVC Updatemodel 和 Linq-To-Sql 创建新实体而不是更新

    c# - ASP.NET MVC5 - 更新数据库后创建不需要的字段

    用于格式化文本的 JavaScript 函数

    asp.net-mvc - View 应该依赖于它的 Controller 吗? (ASP.NET MVC)

    javascript - MVC : Iterating a Viewbag array in javascript

    c# - 每个请求的 WebApi、Autofac、System.Web.Http.Filters.ActionFilterAttribute 实例

    c# - 在 ViewBag 中存储匿名对象

    asp.net-mvc - MVC ViewBag 最佳实践