我是 MVC 框架的新手。我正在使用 Entity Framework DBcontext 来执行数据库相关操作。我正在这样做 Entityframework-->dbcontext-->模型--> Controller --> View 。 我直接绑定(bind)模型来查看。例如有表名称UserProfile,我创建了具有相同名称和列作为模型属性的模型。我正在从用户配置文件中提取记录集合,并将该集合直接绑定(bind)到 View 。 这是模型
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
[DisplayName("ID")]
public long UserId { get; set; }
private string _UserName;
public string UserName
{
get { return _UserName; }
set { _UserName = value; }
}
public string Thalassemic
{
get;
set;
}
[Display(Name = "Your First Name")]
[Required(ErrorMessage = "First Name is Required.")]
[StringLength(30, ErrorMessage = "First Name must be {2}-{1} to long", MinimumLength = 2)]
[RegularExpression("^[a-zA-z ]+$", ErrorMessage = "First name must contain only characters")]
public string FirstName { get; set; }
[Display(Name = "Your Last Name")]
[Required(ErrorMessage = "Last Name is Required.")]
[RegularExpression("^[a-zA-z ]+$", ErrorMessage = "Only characters are allowed.")]
[StringLength(20, ErrorMessage = "First Name must be {2}-{1} to long", MinimumLength = 2)]
public string LastName { get; set; }
[Required(ErrorMessage = "Email Address is Required.")]
[StringLength(250, ErrorMessage = "{0} must be {2}-{1} to long", MinimumLength = 4)]
[Display(Name = "Email Address")]
[DataType(DataType.EmailAddress, ErrorMessage = "Please enter a valid email-address.")]
[RegularExpression("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$", ErrorMessage = "Please enter a valid email-address.")]
//todo: re-think about updating email address as we are user email as login id and this can't change
public string Email { get; set; }}
我应该使用这个DTO对象来将数据与 View 绑定(bind)
public class UserProfileDTO
{
public long UserId { get; set; }
private string _UserName;
public string UserName
{
get { return _UserName; }
set { _UserName = value; }
}
public string Thalassemic
{ get;
set;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
基于以上我想知道这是正确的方法吗?如果不是,那么最佳实践是什么?
最佳答案
在 MVC 中通常不鼓励使用数据库 POCO 类作为模型,以代替仅包含 View 所需数据的 View 模型。想象一下,您有一个包含 30 多个字段的 User
记录,但您只想显示 Username
,您可以简单地创建一个 UsernameViewModel
:
public class UsernameViewModel
{
public string Username { get; set; }
}
它更加简洁,因为您只向客户端发送您需要的字段。
关于c# - .net C# 中 MVC 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30996599/