c# - .net C# 中 MVC 的最佳实践

标签 c# asp.net-mvc entity-framework

我是 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/

相关文章:

asp.net-mvc - ASP.NET MVC 虚拟主机有 paypal 付款选项吗?

c# - Entity Framework 更改 Id 类型

c# - razor 页面,如何将 json 序列化字符串传递到模型属性中

c# - 永远不要在生产代码中使用反射! python 呢?

c# - 使用 html.beginform,如何将 {id} 的值添加到 post url 中?

asp.net-mvc - 如何对自定义 ActionFilter 进行单元测试?

entity-framework - 具有导航属性的 EF-Code 第一个复杂类型

c# - Entity Framework 在哪里存储属性名称和它在 SQL 中选择的列之间的映射?

c# - HttpWebRequest post 返回 422 错误

c# - 如何通过使代码变暗而不是 3 个点来恢复 Visual Studio 的旧方式提醒建议?