【问题标题】:Aurelia and models in ASP.net coreASP.net 核心中的 Aurelia 和模型
【发布时间】:2017-12-27 00:52:29
【问题描述】:

我最近一直在探索不同的 javascript 框架,并决定开始使用 Aurelia 重写一个 ASP.Net Core MVC 前端。 我使用SPA template 重新开始。

一切正常,我已经加载了我的 DAL、BLL 项目,使用 EF 核心建立了与我的数据库的连接,并将数据提取到我的 Aurelia 前端。

但是,目前,在我的 ts 文件中,我使用的接口与我在 BLL 中设置的模型几乎相同。

我的模特:

public class staff
    {        
        [Key]
        public short StaffId { get; set; }

        [DisplayName("First name *")]
        public string FirstName { get; set; }

        [DisplayName("Family name *")]
        public string FamilyName { get; set; }

        [DisplayName("Phone")]
        public string PhoneNumber { get; set; }

        [DisplayName("Birth Date"), DisplayFormat(DataFormatString = "{0:dd MMM yyyy}", ApplyFormatInEditMode = true)]
        public DateTime? BirthDate { get; set; }  
    }

我的 ts 文件中的 Aurelia 接口

interface staff{
    firstname: string;   
    familyname: string;
    phone: string;
    date: date;
}

我想避免冗余,而是直接使用模型。 有没有办法通过将模型导入/注入到我的 ts 文件中来做到这一点? 更好的是,我可以使用注释在 html 中设置表格的标题或进行一些格式化/验证吗?

谢谢

西尔万

【问题讨论】:

    标签: typescript asp.net-core aurelia


    【解决方案1】:

    虽然最初从后端模型生成 aurelia 模型似乎是个好主意,但它消除了使用 SPA 的一大好处。

    您应该将后端和 aurelia 前端视为不同的应用程序。您的视图模型永远不会与您的域完全相同,并且将它们分开意味着对其中一个的完全重写不会影响另一个。

    在通过网络发送之前,您应该实现一种映射机制,将您的域模型映射到 aurelia 模型。 (如果您不想自己实现,我建议使用 automapper)

    根据经验,随着功能的增加,您的 aurelia 模型会慢慢偏离您的领域。您将开始在您的视图中拥有在映射期间动态生成的属性,通常作为其他属性的聚合。如果您尝试将这些属性放入您的域中(它们不应该存在的地方!),这可能会造成很大的痛苦。我知道重复似乎是开销,但是让您的前端直接依赖于您的后端会带来更大的开销.

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 2017-09-28
      • 1970-01-01
      • 2017-03-12
      • 2018-10-17
      • 1970-01-01
      • 2019-07-20
      • 2021-06-06
      • 2017-09-27
      相关资源
      最近更新 更多