ViewModel 还是 ViewBag?

2024-01-05

我对 MVC4、EF5 和 ASP.Net 相当陌生,而且我似乎无法在任何地方找到好的答案。

基本上,一切都应该通过视图模型完成还是也可以合并视图包?

假设我有一个填充下拉列表的方法,并且我正在使用视图模型来表示视图的输出。

我可以使用吗Viewbag.DropDown = PopulateDropdown();或者合并会更好 通过创建一个属性来保存,将其放入 ViewModel 中List<SelectListItem>由...制作PopulateDropdown(); ?

我知道 ViewBag 有多方便,但我还没有看到任何不使用它的充分理由?如果有人也能为我提供更多见解,那就太好了。


基本上,一切都应该通过视图模型完成还是可以 还要合并 viewbag 吗?

一切都应该在视图模型内完成。这就是视图模型。您专门定义以满足您的视图要求的类。不要将 ViewBags 与 ViewModel 混合在一起。视图不再清楚信息来自哪里。要么仅使用视图模型(我推荐的方法),要么仅使用 ViewBags。但不要将 2 者混用。

因此,在您的特定示例中,您的视图模型上会有一个属性,其类型为IENumerable<SelectListItem>在您的视图中,您将使用 Html.DropDownListFor 助手的强类型版本来绑定到模型:

@Html.DropDownListFor(x => x.ProductId, Model.Products)

显然这些只是我的2分钱。其他人会说混合 ViewModel 和 ViewBags 很好,我尊重他们的意见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ViewModel 还是 ViewBag? 的相关文章

随机推荐

  • Bootstrap Datetimepicker设置日期

    我正在使用一个日期时间选择器 http eonasdan github io bootstrap datetimepicker 来自 Eonasdan 到目前为止效果很好 我有一个像这样的 HTML 元素 div div 并使用 datet
  • Win32 (GDI) - 设置静态控件的不透明度

    我正在使用 C 无 MFC 或 GDI 我想要的是将子窗口的不透明度设置为 100 我的子窗口是STATIC控制 我想知道这是否可能 如果可以 有人可以指出我如何做到这一点的正确方向 这是我的设置 我创建我的父窗口如下 HWND hWnd
  • 有没有办法在远程主机上运行 Selenium 测试?

    我想运行以下设置 on host 1 执行一些 Selenium 测试 on host 2 运行火狐浏览器 On host 1将有一个 Jenkins 实例运行测试并且host 2将是一个运行在上面的 Docker 容器host 1 并且
  • 折叠卡打开然后立即再次关闭

    我读过以前的帖子 讨论了导航栏和菜单的这个问题 但它似乎并不适用 我有一个非常简单的例子 两张卡 一张默认打开 另一张折叠 当我尝试按卡 2 按钮展开第二张卡时 它会打开 但随后立即再次关闭 我不确定我做错了什么 这里的例子 div div
  • PHP:反洪水/垃圾邮件系统

    我实际上正在开发一个 PHP 项目 该项目将具有用户系统 登录 注册 将丢失的密码发送到电子邮件 我认为这可能非常容易受到暴力攻击和 或垃圾邮件 发送某人电子邮件的密码 例如 1000 次等 请使用您的幻想 当今的网络服务器 Apache
  • HtmlAgilityPack 获取页面标题和 H1 标签

    嘿 我正在尝试通过执行以下操作从网页获取页面标题和 H1 标签 doc LoadHtml htmlSourceCode txtTitle Text doc GetElementsByTagName title InnerText txtH1
  • IExpando 是什么以及它在哪里使用?

    我正在使用反射器浏览 mscorlib 中的类型 就像你一样 并遇到了IExpando接口 http msdn microsoft com en us library system runtime interopservices expan
  • Swift:在 switch 语句中测试类类型

    在 Swift 中 您可以使用 is 检查对象的类类型 如何将其合并到 开关 块中 我认为这是不可能的 所以我想知道解决这个问题的最佳方法是什么 你绝对可以使用is in a switch堵塞 请参阅 Swift 编程语言中的 Any 和
  • 我应该定义默认构造函数吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 所以我们正在进行一些同行评审 这个小小的分歧出现了 即使默认构造函数什么也不做 是否应该定义它 还是应该让编译器定义它 到目前为止 双方都无法拿
  • 如何实现GMail中聊天窗口的弹出功能?

    我并不是在寻找完整的实施 我更感兴趣的是他们是如何做到的 我知道他们使用 GWT 但我想要一个更底层的答案 天真地 我会首先想到当您单击弹出链接时 他们只是打开一个新窗口并将内容复制到其中 有很多原因导致效果不佳 所以我想知道是否有人知道或
  • C++。为什么 std::cout << char + int 打印 int 值?

    比方说 我们有 char x a int y 1 所以 如果你运行 std cout lt lt x y 它打印 98 而不是 b 正如我所见here http www cplusplus com reference ostream ost
  • 有没有同时支持 Microsoft Office 和 Open Office 的 Java 库?

    Apache POI 支持 Microsoft Office JExcelApi 支持 Open Office 那么有没有同时支持 Microsoft Office 和 Open Office 的 Java 库呢 注 在pom xml在文件
  • R:从下对角线创建对称矩阵[重复]

    这个问题在这里已经有答案了 我有一个矩阵的下三角 我试图将其转换为 dissim 矩阵 因此它需要是对称的 print rdf X0 X1 X2 X3 X4 0 0 0000000 NA NA NA NA 1 0 5340909 0 000
  • 计算文本文件中单词列表的出现次数

    我有两个文本文件 File1 如下所示 apple dog cat File2 看起来像这样 appledogtree dog catapple apple00001 我想计算 File1 中的单词列表在 File2 中出现的次数 并得到如
  • Logstash 输出到 AWS EC2 上的 Elasticsearch

    我在配置 Logstash 以输出到 AWS EC2 上的 Elasticsearch 集群时遇到问题 我正在使用 Logstash 版本 1 1 5 和 Elasticsearch 1 19 8 这是我在logstash中的输出配置 ou
  • SQL 开发人员:为其他用户生成数据库文档

    我的数据库中有一个管理员用户 管理员用户可以访问所有数据库对象 我没有管理员用户的凭据 我的应用程序还具有普通用户 该用户对管理员用户的许多对象具有访问权限 选择 删除授权等 因此 在 SQL 开发人员中 当我使用普通用户创建连接时 我可以
  • 我可以在不创建临时数组的情况下移动 NSMutableArray 中的对象吗?

    我以为我已经拥有了 void shiftArray NSMutableArray mutableArray NSUInteger shift for NSUInteger i 0 i lt mutableArray count i NSUI
  • 如何增加 Android 应用程序的堆大小?

    我正在编写一个使用多个 3D 模型的 Android 应用程序 这种带有纹理的模型会占用大量内存 我发现制造商对应用程序可以使用的堆大小设置了限制 例如我的平板电脑三星 Galaxy Tab 8 9 P7310 可以占用 64MB 内存 有
  • 解决非图(绘图方块)

    今天是星期五下午 让我们来解决一个有趣的谜题 算法问题 我最喜欢的任天堂 DS 游戏之一是绘图方块 DS http en wikipedia org wiki Picross Ds 游戏非常简单 它涉及解决称为连线图 http en wik
  • ViewModel 还是 ViewBag?

    我对 MVC4 EF5 和 ASP Net 相当陌生 而且我似乎无法在任何地方找到好的答案 基本上 一切都应该通过视图模型完成还是也可以合并视图包 假设我有一个填充下拉列表的方法 并且我正在使用视图模型来表示视图的输出 我可以使用吗View