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? 的相关文章

  • 将 Azure Blob 与 Azure 网站结合使用

    我正在制作一个MVC Windows Azure涉及用户上传图像的网站 我想将图像存储在 blob 中 我搜索了教程 但大多数都涉及Webapps而不是 MVC 网站 我发现的唯一有用的教程是 http www codeproject co
  • MVVM 创建 ViewModel

    有人可以向我解释一下如何为 MVVM 模式创建 ViewModel 我试图理解这里的教程 http msdn microsoft com en us magazine dd419663 aspx http msdn microsoft co
  • 盒式捆绑包与 MVC4 捆绑包

    我目前正在开发一个原型 ASP NET MVC 3 解决方案 该解决方案将用作多个项目重写的基础 来自 Web 表单 我的目标之一是跨应用程序实现一些脚本管理 而不是我们目前没有的目标 MVC 3有一个缺陷恕我直言 如果您需要在部分视图或模
  • ServerManager 构造函数在测试环境中崩溃

    我正在 MVC 4 中构建一个控制应用程序 遇到了一个非常烦人的问题 当我在本地调试项目时 它工作正常 但是 当我将项目部署到测试服务器 Windows Server 2008 R2 时 出现以下换行符 ServerManager mana
  • asp.net mvc 4:向 Scripts.Render 路径添加参数

    我想做以下事情 Scripts Render bundles jquery version 1 版本值必须是动态的并且应该与 cookie 中定义的值匹配 如何将此参数添加到 Scripts Render 我用 jQuery 尝试过类似的方
  • 无法将 NULL 值插入列“RoleId”(mvc4 简单成员身份)

    我注意到其他人也遇到了同样的问题 例如无法将 NULL 值插入列 UserId https stackoverflow com questions 15346608 cannot insert the value null into col
  • 你调用的对象是空的。 IE问题

    我在 ASP Net 中开发了一个网站 它在除 IE 之外的所有浏览器中都能正常工作 在 IE 中我收到错误 对象引用未设置为对象的实例 在我的本地计算机中一切正常 发布到服务器后出现错误 有什么想法如何解决这个问题吗 这是我得到的堆栈跟踪
  • 多态 MVC 视图

    因此 我在 ASP NET MVC 中制作一个注册页面 其中有一个字段列表 该列表会根据许多条件 从数据库中获取 而变化 在每次更新数据库时不更改代码的情况下 在视图上显示这些字段的最佳方法是什么 我正在考虑的当前系统是制作一个带有 名称
  • Knockout.js:有条件绑定div的title属性

    我的页面上有一个 viewModel 它保存一些设备当前状态概述的数据 到目前为止 除了一个问题之外 一切都运行良好 我需要根据 viewModel 中的另一个值设置 div 元素的 title 属性 我知道您基本上可以像这样设置 titl
  • Ajax.ActionLink 和确认对话框

    我有一些问题 Ajax ActionLink 我想显示确认对话框 是的 我知道我可以这样做 Ajax ActionLink Do it Delete new AjaxOptions Confirm Are you sure 但我想要有自己的
  • Windows 8 RTM 上的 Visual Studio 2012 Web 发布无法启动浏览器

    我正在 Windows 8 RTM x64 上使用 Visual Studio 2012 Premium 开发 ASP NET MVC 4 网站 当我右键单击 Web 应用程序并选择 发布 时 Visual Studio 2012 返回消息
  • MVC 4 IntelliSense 无法在 Visual Studio 2010 的 Razor 中工作

    我将 Visual Studio 2010 与 ASP NET MVC4 一起使用 并且 IntelliSense for Razor 语法在应用程序的视图中对我不起作用 我能做些什么 还引用自 http sebnilsson com 10
  • MVC 5 动态行与 BeginCollectionItem

    单击按钮时向表添加 删除行的最佳方法是什么 我需要从子类属性创建的行 子类是主类 模型中的列表 当前有一个视图 模型是 MyMain 它使用 RenderPartial 引用部分视图 分部视图显示模型的属性 一个名为 MyChild 的类
  • ASP.Net MVC 4 通用主要难点

    我正在开发一个ASP NET MVC 4Web应用程序 以前我的 MVC 应用程序是使用MVC 3和这个新的MVC 4我刚刚复制 重复使用了我的应用程序认证和授权码从以前的应用程序 当用户登录我的网站时 我会执行以下操作 账户控制器 pub
  • 实体类型 ApplicationUser 不是当前上下文模型的一部分。在项目开始时使用了两个不同的数据库

    我使用实体框架创建了一个 MVC 4 应用程序来读取数据并将数据写入我在 Azure 数据库上托管的数据库 Azure 数据库应该保存应用程序数据和应用程序的登录数据 但是 当我第一次创建应用程序时 我忘记删除到本地计算机的连接字符串 因此
  • 在 IIS 6 虚拟目录中运行的 ASP.Net MVC 4 应用程序上目录列表被拒绝

    我试图让 ASP Net MVC 4 在 IIS6 上工作 但遇到了总是有趣的 目录列表被拒绝 错误 在您开始发布有关无扩展名网址以及我需要如何阅读 Haacked 博客文章之前 我已经 因此 这里的设置是 我创建了一个新网站并将其配置为使
  • 有没有更好的方法使用 MVC 4 和 Entity Framework 5 添加子记录?

    我正在学习 MVC 并结合实体框架处理其无状态性质 我的问题是 有没有更优雅的方式来处理下面的场景 我有两个 POCO 实体 public class Contest public long ID get set public IColle
  • SignalR 更新无法在 Chrome 上正常运行

    我创建了一个带有 SignalR 通知的 ASP MVC 4 应用程序 我在本地以调试模式运行它 并通过 IIS 发布在服务器上运行它 使用 Internet Explorer 11 时 这基本上可以正常工作 稍后解释 HTML1300 N
  • 使用 401 发送消息:Asp.net Web-api

    我在 ASP NET Web API 中 在登录方法中 我根据数据库检查用户 密码 如果它们不匹配 我将返回 401 状态代码以及invalid user or password method like var content new St
  • 将自定义参数传递给 ValidationAttribute

    我构建了一个自定义 ValidationAttribute 以便可以验证系统中的唯一电子邮件地址 但是 我想以某种方式传递自定义参数 以便为我的验证添加更多逻辑 public class UniqueEmailAttribute Valid

随机推荐

  • 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