0

メタデータ用にMVCのDataAnnotationsのクラスを拡張する方法があるかどうかを調べようとしています。

例えば:

自動車が共有するすべての基本的なプロパティを含むVehicleというモデルがある場合、TruckモデルとCarモデルがあります。どちらもVehicleモデルのサブクラスです。

ここで、VehicleにエンジンサイズとVehicle Weightのプロパティが含まれ、TruckにプロパティTowing Capacityが含まれ、CarにプロパティTrunkCapacityが含まれていると仮定します。

Vehicleで共有されているプロパティのメタデータを1回だけ指定する方法はありますか?

私は次のようなものを試しました:

[MetadataType(typeof(VehicleMD))]
public partial class Vehicle
{
   public class VehicleMD
   {
       [Display(Name = "Engine Size")]
       public double EngineSize {get;set;}

       [Display(Name = "Vehicle Weight")]
       public double VehicleWeight {get;set;}
    }
 }

ただし、TruckまたはCarモデルを使用するビューでは、TruckおよびCarの部分クラスで注釈も指定しない限り、メタデータは適用されません。

4

1 に答える 1

1

いいえ。

エンジンがアノテーションを取得するためにクラスに反映する方法のため、それらは最も子のクラスに適用する必要があります。

もう 1 つのオプションは、別のメタデータ タイプを使用するのではなく、問題のクラスに DataAnnotations を直接適用することです。

于 2012-12-20T16:15:03.467 に答える