2017-07-21 95 views
0

我一直在探索最近不同的JavaScript框架,並決定開始使用Aurelia重寫ASP.Net Core MVC前端。 我用SPA template重新開始。Aurelia和模型在ASP.net核心

一切工作正常,我已經加載了我的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奧裏利亞接口文件

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

我想避免冗餘,並且想使用這些模型,而不是直接。 有沒有辦法通過導入/注入模型到我的ts文件中? 更好的我可以使用註釋來設置我的表格在HTML中的標題或做一些格式化/驗證?

謝謝

西爾

回答

0

雖然,起初,它可能看起來像一個好主意,有從後端模型生成您的Aurelia路上的機型,它消除了使用SPA大好處。

您應該將後端和aurelia前端視爲不同的應用程序。您的視圖模型永遠不會與您的域完全相同,並將它們保持分離,這意味着對其中任何一個的重寫都不會影響另一個。

您應該實施一種映射機制,將您的域模型映射到aurelia模型,然後通過電線發送它們。 (如果你不想自己實現,我建議使用automapper)

從經驗來看,隨着功能的增加,你的aurelia模型將慢慢地脫離你的域。您將開始在視圖中顯示在視圖中生成的屬性,通常是其他屬性的集合。如果您試圖將這些屬性放入您的域(這不應該是他們的地方),這可能會導致很大的痛苦。我知道重複看起來像是開銷,但是您的前端直接依賴於後端會帶來更大的開銷。