传递ViewData与创建新类

Gra*_*ett 0 asp.net asp.net-mvc viewdata

我在StackOverflow和其他地方看过几篇文章讨论了将来自多个实体的数据整合到一个强类型视图中的各种方法,这些方法是使用ViewData对象或构建一个利用这两个实体的新自定义类.

对我来说,似乎如果你代表某种新的混合实体,你会想要创建一个新类并对其进行处理.但是,我可以看到使用视图数据的原因,如果您传入的数据不是您正在使用的实体的一部分,但仍在您的模型中,例如下拉列表或其他UI元素.

我看到人们出于各种原因提倡一个或另一个,我想知道何时使用一个而不是另一个?

Mar*_*man 8

一旦我使用了类型化的ViewDataModels.我从来没有需要将东西放在ViewData字典中并在View中使用魔术字符串.魔术字符串很脏并且非常容易出错.

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

  • HomeController的
  • HomeModel
  • HomeViewDataModel
  • 主页ActionResult查看页面.

所有这些*ViewDataModel都扩展了一个常见的ViewDataModel类,用于将全局站点配置数据传递给视图.

我真的不在乎我在ViewDataModel中放了什么.如果我需要它,我将它作为属性并在需要时填充它,无论是LINQ to SQL类还是任意菜单配置类.

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

我经常将ASP.NET MVC视为ASP.NET MVVM作为传输器ViewDataModel类,它将模型和垃圾(?)数据传输到视图中发挥了巨大作用.