我一直在阅读Professional ASP.NET MVC 1.0书籍以及阅读其他来源,讨论在控制器中使用ViewModel而不是ViewData到Views.但后来我看到很多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是一种更加抽象和分离的方式,也是一种类型化的方式.我只是不想在我需要获取某些数据的场景中做得很短,例如可以从其他对象(如HtmlHelper类)轻松访问的ViewData.
思考?标准是什么?经验?我有点关闭或者你只是使用一个组合,并且在其他情况下仍然使用ViewData,而不仅仅是将数据从Controller发送到View或者什么?
如果您根本不使用ViewData而是将ViewModel与控制器一起使用,那么您使用ViewModel似乎全有或全无,因此ViewData没有任何用途,因为您没有使用控制器中的任何内容设置它它在那一点上没用?我混淆了任何人或离开这里吗?这让我自己感到困惑,这是肯定的.
嗯,ViewData 是一种实现起来非常快的方法。然而,您需要进行大量的字符串文字传递,这通常不是一件好事。您可以通过使用一些字符串常量来解决这个问题,这就是我对 Session 变量所做的处理,但我认为 ViewModel 是一种更好的方法。任何时候您可以使用 ViewData,也可以使用 ViewModel。ViewModel 不必只是您的域对象;它也可以是您的域对象。它可能是一个辅助类,不仅具有域对象,还具有一些特定于您的视图的额外属性;这就是它存在的原因。因此,使用 ViewModel,编译器可以帮助您,并且从 OO 的角度来看,它显然比仅将键传递给字典要干净得多。
我认为 MVC 提供了一个很好的方法。对于那些需要“只是完成它”的人来说,它提供了快速而肮脏的(不一定是坏事)和更干净的方法,这两者都非常易于使用。
如果您还没有阅读 Scott Gurthie 的 ASP.NET MVC 教程;我强烈推荐它:
归档时间: |
|
查看次数: |
1598 次 |
最近记录: |