将ASP.NET核心模型映射到Angular 2(保持DRY主体)

时间:2017-01-18 10:40:43

标签: javascript angular asp.net-core asp.net-core-mvc asp.net-core-1.1

作为ASP.NET核心开发人员,我刚刚开始使用Angular 2作为前端。我想知道我读过的所有文章和书籍都在JavaScript中为Angular 2重新声明了他们的ASP.NET核心模型。这对我来说似乎不是一个好主意,因为它违反了DRY原则:在服务器上使用ViewModel-对于bandwitch和安全目的来说,这对我来说是最好的做法。所以我必须在JavaScript中重新声明这个ViewModel。

可以在本文中找到一个示例:https://www.codeproject.com/Articles/1161804/ASP-NET-Core-Angular-EF-Web-API-Using-Template-Pac那里

在这种情况下,不存在分离的ViewModel。但为了说明这种情况,让我们假设后面的类(缩短了可读性)是后端的ViewModel:

public class Student {  
    [Key]  
    public int Id { get; set}

    [Required]  
    [Display(Name = "Name")]  
    public string Name { get; set}

    [Required]  
    [Display(Name = "Email")]  
    public string Email { get; set}
}  

现在Angular 2 Component中有一个手动副本,如下所示:

export class MyComponent {
    // ...
}

export interface Student {
    Id: number;
    Name: string;
    Email: string;
}

我认为让ASP.NET Core / Visual Studio从C#模型生成JavaScript接口会更好。

验证是什么?

下一级是验证,我们遇到同样的问题:我需要验证规则,如服务器端的[Required]属性。这确保了只有有效数据存储在数据库中 - 并且没有不一致的数据(可能由开发错误或恶意用户引起)试图操纵请求。

但在客户端也需要它们,以便用户获得有关无效字段的反馈。我解决这个问题的想法是一个ajax-handler,它在服务器端发送表单之前对数据进行保护,因此这使得客户端的冗余验证规则变得不必要。

这是最佳实践吗?如果是,它是如何在Angular 2中完成的?

0 个答案:

没有答案