C# 具有许多属性的模型的ViewModel?
我计划创建一个Asp.NETMVC应用程序,其中包含一个与其他模型有多对多关系的大型模型的编辑/创建页面。我找到了这个工具并计划使用它 在本例中,“创建”页面使用以下ViewModelC# 具有许多属性的模型的ViewModel?,c#,asp.net-mvc,design-patterns,asp.net-mvc-5,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Design Patterns,Asp.net Mvc 5,Asp.net Mvc Viewmodel,我计划创建一个Asp.NETMVC应用程序,其中包含一个与其他模型有多对多关系的大型模型的编辑/创建页面。我找到了这个工具并计划使用它 在本例中,“创建”页面使用以下ViewModel public class UserProfileViewModel { public int UserProfileID { get; set; } public string Name { get; set; } public virtual ICollection<Assigne
public class UserProfileViewModel
{
public int UserProfileID { get; set; }
public string Name { get; set; }
public virtual ICollection<AssignedCourseData> Courses { get; set; }
}
然而,在我的例子中,会有很多属性(带有数据注释),比如说50个属性。ViewModel是否应该复制所有这些属性(也包括数据注释)?(看起来很丑?)还是有更好的办法
更新
将ViewModel定义为
public class UserProfileViewModel
{
public UserProfile UserProfile { get; set; }
.... // Other properties needed by the view.
}
这种方法的一个缺点是,即使视图中不需要,也会暴露模型中的所有属性。摘自:
非常适合ViewModels的数据类型如下:
- 主详细数据
- 更大的数据集
- 复杂关系数据
- 报告和汇总数据
- 仪表盘
- 来自不同来源的数据
- 主详细数据
- 更大的数据集
- 复杂关系数据
- 报告和汇总数据
- 仪表盘
- 来自不同来源的数据
- 主详细数据
- 更大的数据集
- 复杂关系数据
- 报告和汇总数据
- 仪表盘
- 来自不同来源的数据
- 主详细数据
- 更大的数据集
- 复杂关系数据
- 报告和汇总数据
- 仪表盘
- 来自不同来源的数据
ViewData和ViewBag对象为您提供了访问模型旁边的额外数据块的方法,但是对于更复杂的数据,您可以向上移动到ViewModel。另一方面,TempData专门用于处理HTTP重定向上的数据,因此请记住在使用TempData时要小心。视图模型非常简单:视图模型应该只包含视图所需的数据。也就是说,视图模型设计由(静态)视图驱动。静态,因为您可以在浏览器中通过ajax更新视图的一部分,所以您的模型包含该信息没有任何意义(除非javascript需要将其作为init值) 如何存储数据或业务层如何使用数据(如果有)不是视图模型关注的问题 已更新 最干净、最安全的方法是使用p定义视图模型
public class UserProfileViewModel
{
public UserProfile UserProfile { get; set; }
.... // Other properties needed by the view.
}