【发布时间】:2009-06-17 03:20:25
【问题描述】:
我一直在阅读专业的 ASP.NET MVC 1.0 书以及其他有关使用 ViewModel 而不是 ViewData 从控制器到视图的资源。但是后来我看到有很多 ViewData 的例子被用在那些除了从 ViewData 中获取东西之外别无他法的艰难场景中。但后来我读了一本像 Pro ASP.NET MVC Framework 这样的书,他只谈论 ViewData,没有关于 ViewModel。那么 ViewModel 是一个非常新的概念还是什么?
我看到 ViewModel 是一种更好的方法,但它是一个可靠的替代方案吗?我的意思是 ViewData 在 其他 事物中很容易为您提供,例如 ViewModel 没有的 HtmlHelper 对象。或者例如在自定义控件中使用它 (http://www.codeproject.com/KB/custom-controls/MVCCustomControls.aspx)。那么我是根据不同的目标使用两者的组合还是什么?如果我出于某种原因想在我的 Extension 方法中访问 ViewModel 怎么办?我在这里迷失了要走的路。我知道 ViewData 不是强类型的,但是您可以设置视图以指定类型,从而使您的 ViewData 类型化,但我只是想知道。有很多对 ViewData 的支持,但我知道 ViewModel 是一种更加抽象和分离的方式,就像它被键入一样。我只是不想在需要获取某些数据(例如 ViewData)的情况下缩短自己的时间,这些数据可以从其他对象(例如 HtmlHelper 类)轻松访问。
想法?标准?经验?我是不是有点跑题了,还是你只是使用一个组合并且在其他情况下仍然使用 ViewData,而不仅仅是从你的控制器发送数据到你的视图或什么?
如果您根本不使用 ViewData 而是将 ViewModel 与您的控制器一起使用,那么您使用 ViewModel 似乎是全有或全无,因此 ViewData 没有任何用途,因为您没有使用任何来自你的控制器,所以它在那个时候没有用??我在这里混淆了任何人或方式吗?这是肯定的。
【问题讨论】:
标签: asp.net-mvc