- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在阅读 Professional ASP.NET MVC 1.0 书籍,并阅读其他有关在 Controller 中使用 ViewModel 而不是 ViewData 到 View 的资料。但是后来我看到了很多 ViewData 的例子,它们被用在很难的场景中,除了从 ViewData 获取一些东西之外别无他法。但是后来我读了一本像 Pro ASP.NET MVC Framework 这样的书,他谈论的只是 ViewData,而不是 ViewModel。那么 ViewModel 是一个非常新的概念还是什么?
我看到 ViewModel 是一种更好的方法,但它是一个可靠的替代方案吗?我的意思是在 中您可以轻松使用 ViewData其他 诸如 HtmlHelper 对象之类的东西,其中 ViewModel 不是。或者例如在自定义控件中使用它( http://www.codeproject.com/KB/custom-controls/MVCCustomControls.aspx )。那么我是根据不同的目标使用两者的组合还是什么?如果我出于某种原因想在我的扩展方法中访问 ViewModel 怎么办?我不知道该走哪条路。我知道 ViewData 不是强类型的,但是您可以将 View 设置为指定类型,从而使您的 ViewData 类型化,但我只是想知道。有很多对 ViewData 的支持,但我知道 ViewModel 是一种更加抽象和分离的方式,就像它被键入一样。我只是不想在需要获取某些数据(例如可从其他对象(例如 HtmlHelper 类)中轻松访问的 ViewData)的情况下缩短自己的时间。
想法?标准?经验?我是不是有点过分了,或者您只是使用组合并在其他情况下仍然使用 ViewData 而不仅仅是将数据从您的 Controller 发送到您的 View 或什么?
如果您根本不使用 ViewData 而是将 ViewModel 与您的 Controller 一起使用,那么您使用 ViewModel 似乎是全有或全无,因此 ViewData 没有任何用途,因为您没有使用 Controller 中的任何内容对其进行设置,所以那个时候没有用??我是否让任何人感到困惑或离开这里?这是肯定的。
最佳答案
好吧,ViewData 是一种非常快速的实现方法。但是,您正在执行大量字符串文字传递,这通常不是一件好事。你可以通过使用一些字符串常量来解决这个问题,这就是我对 Session 变量所做的,但我认为这里 ViewModel 是一种更好的方法。任何时候都可以使用 ViewData,也可以使用 ViewModel。 ViewModel 不必只是您的域对象;它可能是一个助手类,它不仅有一个域对象,还有一些特定于您的 View 的额外属性;这就是为什么它在那里。因此,使用 ViewModel,您可以得到编译器的帮助,而且从 OO 的角度来看,它显然比仅将键传递给字典要干净得多。
我认为 MVC 在这里提供了一个很好的方法。它为那些需要“完成它”的人提供快速和肮脏的(不一定是坏事)和更清洁的方法,两者都非常易于使用。
如果您还没有阅读 Scott Gurthie 的 ASP.NET MVC 教程;我强烈推荐它:
http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx
关于asp.net-mvc - 使用 ViewData 或不使用 ViewData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1004948/
我一直在阅读 Professional ASP.NET MVC 1.0 书籍,并阅读其他有关在 Controller 中使用 ViewModel 而不是 ViewData 到 View 的资料。但是后
在我的 Controller 中我一直在设置 ViewData.Model = DBModel.Table.Take(1).Single(); 其中 DBModel 是由 Linq-to-SQL 的
只是想知道绑定(bind)到 MVC View 的 ViewData 和绑定(bind)到 @Html 的 ViewData 之间的实际区别是什么帮助对象? 我写了一个页面,他们似乎不是指同一件事。
我的 ASP.NET MVC 4 应用程序有一个带有国家/地区下拉菜单的联系表。对于该菜单,我使用 Html.DropDownListFor 辅助方法。但是,如果未选择国家/地区,我会遇到异常:“没有
我将我的 HTML 存储在数据库中,以便页面从数据库加载 HTML 数据。我在我的 ASPX 页面中使用 ViewData 来填充页面。 HTML 存储在 NVARCHAR(MAX) 列中,它非常适合
我正在通过 MVC3 处理我的第一个应用程序,但它仍然是一个新手: 我正在尝试在母版页上成功我的 ViewData[] 因为它包含将在每个页面上使用的消息,但是当我尝试访问它时,它说: CS0103:
问题仅用于教育目的。 我有一个 MVC 应用程序,它有 3 个 Web Journeys,它们在许多方面相互镜像 - 这使得引入处理公共(public)部分的基类变得很方便。 我还使用了很多被放入 v
我已经尝试检查使用 asp.net mvc 的最佳实践,并且很多人说我们永远不应该使用 ViewData。我读过这个post似乎是这样。 我能想到使用 ViewData 的一个原因是,如果您只想将一个
我网站的一部分需要导航下拉列表的全局数据,现在我在一个属性中执行以下操作: ViewData["projects"] = new[] { new ProjectNav { Id = 1, Na
我正在尝试通过 AJAX 将 String 发送到 Controller ,并在 Controller 将返回的 View 中使用它: Index.cshtml $(document).r
在 MVC 应用程序中,我想获取外部 .js 文件中的 ViewBag、ViewData、TempData 值。我不想在 view.cshtml 中编写脚本,所以我向其中添加了外部 js 文件。但我无
我正在尝试填充 HTML。带有 selectlist 的下拉列表,其中填充了来自数据库调用的字符串值(位置地址)和文本(位置描述)字段。我将选择列表作为 View 数据传递给我的 View 。下拉列表
我想在模式窗口上显示 ViewData 的内容,在我的例子中它包含字符串。为此,我在我看来使用了以下代码。 To learn more about ASP.NET MVC visit ht
我有一个指向 Controller 的链接,该 Controller 呈现包含此 javascript 的页面。 $(document).ready(function () { var
我用一堆 css 样式属性填充 View 数据。 ";"> 我希望能够做与上述类似的事情。即使用放入 View 数据的样式并将它们用于内联样式。 我该怎么做?谢谢 最佳答案 你的双引号太多了。试试这
我搜索过这个东西,但没有得出结论,如果我有 5-6 个下拉列表在我的页面中,我将它们与 ViewData 或 ViewBag 绑定(bind),而不是使用模型,因为我发现它有点简单。有没有性能相关的问
嗨,我是MVC的新手,但我对如何构建将ViewData返回给他们的MVC用户控件一无所知。我希望有人能发布有关如何解决此问题的分步解决方案。如果您可以使解决方案非常详细,那将对您大有帮助。 抱歉,我的
我正在 ASP.Net Controller 中创建一个 ViewData,如下所示: var elements = db.Requests.GroupBy(user => user.submitUs
我在 MVC 3 中看到了 ViewBag。它与 MVC 2 中的 ViewData 有什么不同? 最佳答案 它使用 C# 4.0 动态功能。它实现了与 viewdata 相同的目标,应该避免使用强类
当 Controller 渲染基于模型的 View 时,您可以使用索引器从 ViewData 集合中获取属性(即 ViewData["Property"])。但是,我有一个共享用户控件,我尝试使用以下
我是一名优秀的程序员,十分优秀!