2017-07-21 10 views
0

私は最近、さまざまなJavaScriptフレームワークを調査しており、Aureliaを使用してASP.Net Core MVCフロントエンドを書き直すことに決めました。 私はSPA templateを使い始めました。AureliaとASP.netコアのモデル

すべて正常に動作し、DAL、BLLプロジェクトをロードし、EFコアを使用してデータベースに接続し、Aureliaフロントエンドにデータを引き出します。

しかし、当分の間、私のTSファイルでは、私は自分のBLLで設定したモデルとほぼ同じインターフェイスを使用しています。

マイモデル:私のTSで

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; } 
    } 

アウレリアインタフェースは

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

私は冗長性を避けたいファイルと直接代わりに、モデルを使用したいと思います。 モデルをtsファイルにインポート/インジェクトする方法はありますか? さらに、HTMLでテーブルのタイトルを設定するためのアノテーションや、書式設定/検証を行うアノテーションを使用できますか?

ありがとう

シルヴァン

答えて

0

最初に、それはあなたのバックエンドモデルから生成されたあなたのアウレリアのモデルを持っているのは良いアイデアのように見えるかもしれません、が、SPAを使用しての大きな利点を削除します。

バックエンドとアウレリアのフロントエンドの両方を個別のアプリケーションとして扱う必要があります。あなたのビューモデルは決してあなたのドメインと全く同じではなく、それらを分離したままにしておくことは、いずれかの書き換えがもう一方のものに影響しないことを意味します。

ドメインモデルをaureliaモデルにマップして送信する必要があります。 (私はあなた自身を実装したくない場合はオートマッパーを提案します)

経験から、機能が追加されると、あなたのアウレリアモデルはあなたのドメインからゆっくりと分岐します。通常、他のプロパティの集約として、マッピング中にその場で生成されるビュー内のプロパティを持つことになります。これは、これらのプロパティをドメインに適合させようとしている場合には非常に苦労することがあります(重複は避けてください!)重複はオーバーヘッドのように見えますが、フロントエンドをバックエンドに直接依存させると、 。

関連する問題