加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用ViewData或不使用ViewData

发布时间:2020-12-16 04:31:29 所属栏目:asp.Net 来源:网络整理
导读:我一直在阅读Professional ASP.NET MVC 1.0书籍以及阅读其他来源,讨论在控制器中使用ViewModel而不是ViewData到Views.但后来我看到很多ViewData的例子被用在一些很难的场景中,除了从ViewData获得一些东西之外别无选择.但后来我读了一本像Pro ASP.NET MVC Fra
我一直在阅读Professional ASP.NET MVC 1.0书籍以及阅读其他来源,讨论在控制器中使用ViewModel而不是ViewData到Views.但后来我看到很多ViewData的例子被用在一些很难的场景中,除了从ViewData获得一些东西之外别无选择.但后来我读了一本像Pro ASP.NET MVC Framework的书,所有他谈到的只是ViewData,没有关于ViewModel的内容.那么ViewModel是一个非常新的概念还是什么?

我看到ViewModel是一个更好的方法,但它是一个可靠的替代方案吗?我的意思是ViewData在其他方面很容易获得,例如HtmlHelper对象,而ViewModel则不然.或者例如在自定义控件中使用它(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教程;我强烈推荐它:

http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读