2011-06-28 6 views
0

データベースにGUID型の列を持つテーブルがたくさんあります。私は私のビューを生成するときに足場の一部であることを望んでいないので、私は[ScaffoldColumn(false)]を使用しています。新しいエンティティを「作成」するときに、ユーザーが実際のGUIDを入力しないようにします。ユーザーが新しいエンティティを作成したとき、またはGUIDを持つすべてのテーブルに対してコントローラを変更する必要があるときに、新しいGUIDを自動的に追加するプロセスを自動化する方法はありますか(データアノテーションまたはその他の方法で??ユーザーが新しいエントリを作成する時間私はそれを保存する前に新しいGUIDを生成することを確認しますか?ASP.Net MVCのハンドルGUID 3

ありがとうございました。

+1

あなたはormを使用していますか? –

答えて

4

これは、新しい足場の機能が悪いコードを助長する場所です(IMHO)。

ビューに別々のViewModelを定義する必要があります。これらのフィールドには、ビュー固有の検証/ルールとともにユーザーが変更したいフィールドのみが含まれます。

ユーザの入力が有効かどうか(ModelState.IsValid)を確認し、そうであればViewModelのプロパティとエンティティのプロパティとの間で左利きのマッピングを行います。

詳細はViewModel Best Practicesを参照してください。

質問にお答えするために、<input type="hidden"..としてレンダリングされるように、IdフィールドにHiddenInput属性を使用することができます。 IDを設定してに関しては

、あなたのエンティティなどの基本クラスを作成します。

public abstract class BaseEntity { 
    public Guid Id {get;set;} 
    public BaseEntity() { 
     Id = Guid.NewGuid(); 
    } 
} 

ので、あなたは、このクラスからあなたのエンティティを継承することができますし、new MyEntity()を呼び出すときに、基本クラスのコンストラクタが呼び出されますIDを設定します。