2009-07-13 32 views
0

我在StackOverflow和别处讨论过将多个实体中的数据汇集到一个强类型视图的各种方法,这些方法是使用ViewData对象或构造一个新的自定义类利用两个实体。传递ViewData与创建新类

对我来说,如果您代表某种新的混合实体,您似乎想要创建一个新类并将其视为如此。但是,如果您传递的数据不是您正在使用的实体的一部分,但仍在您的模型中,例如下拉列表或其他用户界面,那么我可以看到使用视图数据的原因元素。

由于各种原因,我看到有人主张这个或那个,我想知道是否有什么规则可以相互使用吗?

回答

8

一旦我与键入的ViewDataModels一起去。我从来没有需要将东西放入ViewData Dictionary中,并在View中使用魔术字符串。神奇的琴弦感觉很脏,很容易出错。

我一般做的是创建一个ViewDataModel类为我所有的控制器,即:

  • 的HomeController
  • HomeModel
  • HomeViewDataModel
  • 首页的ActionResult View页面。

所有这些* ViewDataModel的扩展了一个公共ViewDataModel类,对全球站点配置数据传递到有益的意见。

我真的不在乎我放在那个ViewDataModel中。如果我需要它,我将它作为一个属性并在需要时填充它,无论这是一些LINQ to SQL类还是一个任意的菜单配置类。

即使您不需要模型对象以外的其他属性,稍后添加属性也比重新键入视图更容易。相当多的我的ViewDataModel类包含1个属性,但知道我可以添加更多而不需要重构任何东西是一种幸福。

我经常认为ASP.NET MVC是ASP.NET MVVM,作为将模型和垃圾(?)数据传输到视图中的传输器ViewDataModel类起着巨大的作用。

0

我不确定创建ViewModel对象的真正好习惯是什么时候只有模型返回。它只是创建更多的对象来垃圾收集的服务器。我认为使用ViewModel是很好的,但只有在你需要的时候。但我同意必须避免魔术串的事实。它会产生较弱的代码,以后难以维护。

相关问题