你好我对mvc 4中的模型有点困惑,并认为有人可能能指出我正确的方向。非常感谢。
例如,如果我有一个包含以下字段的表
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 5)]
public string UserName { get; set; }
[Required(ErrorMessage="Email Address is Required")]
[StringLength(15, ErrorMessage = "Email Address must be between {0} and {1} in size",MinimumLength = 5 )]
[DataType(DataType.EmailAddress)]
[Display(Name="Email")]
public string Email { get; set; }
[MaxLength(25)]
[Display(Name="Mobile Telephone Number")]
public string Mobile {get;set;}
[MaxLength(500)]
[Display(Name="Headline")]
public string Headline {get;set;}
[Required]
[StringLength(200)]
[Display(Name = "First Name")]
public string FirstName {get;set;}
[Required]
[StringLength(200)]
[Display(Name="Surname")]
public string Surname { get; set;}
public virtual int? DayOfBirthId { get; set; }
public virtual DayOfBirth DayOfBirth { get; set; }
public virtual int? MonthOfBirthId { get; set; }
public virtual MonthOfBirth MonthOfBirth { get; set; }
public virtual int? YearOfBirthId { get; set; }
public virtual YearOfBirth YearOfBirth{get;set;}
这是我在数据库中的用户个人资料表。但是,我想要一个用户注册到该网站的表单。当他们第一次注册时,我不需要所有的细节,如电话我真正需要的是用户名,电子邮件地址和密码。我是否为此创建了另一个模型。或者我有一个模型,并在控制器上将字段设置为null或空字符串注册时不需要。我也有验证,所以这将设置为尚未在表单上输入的数据。
我的问题是,如果数据库需要重新设计以满足这一要求,那么所有表格都应该代表模型。或者控制器是否应设置不需要的值。或者是否应该有另一个模型来表示要创建的表格映射到此表。
我对此感到有些困惑,并且对任何人的澄清都会非常感激。
答案 0 :(得分:2)
看起来您正在将模型直接映射到视图,这很好,但通常会使用ViewModels的概念。
Viewmodels专门针对将使用它们的视图而定制,并且仅包含视图所需的属性。然后映射ViewModels
您可以手动滚动两个对象之间的映射,或使用AutoMapper或EmitMapper等工具。