gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:26:51 27 4
gpt4 key购买 nike

我一直在阅读 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com