MVC3视图模型和域模型问题

时间:2011-09-14 14:24:48

标签: asp.net-mvc

假设我有一个域级别“Person”类,其中包含许多属性(FirstName,LastName,Age,Address,Telephone,EmailAddress等)。出于视图的目的,我只需要传递Age属性。当集合作为JSON字符串传递给客户端时,越小越好。

管理此问题的最佳方式是什么?

1)我是否创建了一个匿名类型集合并将其传递给视图?

2)我是否创建了一个仅包含“Age”属性的新“ViewModelPerson”类型。

3)我是否创建了一个新的域“Person”超级类型,让我的Person和ViewModelPerson从中派生出来(似乎是一种令人费解的做事方式)。

那么,最好的方法是将这些细节持久化到我的服务器上(即将年龄值传递给Domain Person对象的集合?

编辑:

道歉,我应该说我将返回一个Person对象的集合(每个对象只有Age属性)。

3 个答案:

答案 0 :(得分:1)

1)我认为不可能,请详细说明

2)是的!我会称之为PersonAgeViewModel。

3)确实非常复杂,除非您知道您将从人员中获得很多并且计划在数据库中实施TPH或TBT。

答案 1 :(得分:1)

如果您只想发送年龄(单个年龄),则根本不要在视图中指定模型。将年龄值添加到ViewBag。

查看Hajan's Blog Entry

答案 2 :(得分:0)

叫我迂腐,但我倾向于创建一个具有单一年龄属性的ViewModel。除非你在视图中构建JSON,否则我不确定ViewBag方法是否有效。通常,当我们返回JSON时,我们只使用

  

返回Json(模型);

我肯定会建议在域和视图模型之间使用公共基类型。