抽象化を行う1つのアプローチは、必要な他のビュー情報を含め、ビジネスモデルクラスのViewModelを「構成」することです。
class MyObject
{
public int ID {get;set}
[Required]
[StringLength(512)]
public string Name {get;set;}
}
class MyViewModel // ViewModel for a specific view
{
public MyObject MyModel {get;set;} // the model that is being edited
// other data the view might need, set by the controller
public string SomeMessage { get; set; }
public List<SomeObject> SomeObjects {get;set;} /// e.g. for a drop-down list
}
次に、ビューでViewModelを適宜参照します。
@model My.Namespace.MyViewModel
Hello @model.MyModel.Name !!!
このように、ビジネスクラスの検証やデータ注釈を1か所で指定するだけです。
別の検証が必要な場合は、検証ロジックを選択的に適用するための戦略が必要になります。