作为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中完成的?