私は、AdditionalValues などの代替アプローチを見ていますが、テンプレート ビューで使用可能な ModelMetadata オブジェクトに新しいプロパティを追加できるシナリオになる可能性があるかどうか疑問に思っています。
たとえば、次のようにすることができます。
@ViewData.ModelMetadata.MvvmBound
これを Editor および Display テンプレートで使用して、レンダリングされる HTML 要素に MVVM 属性を追加したいと考えています。
私は完全に迷っていますが、これまでの私の努力は次のとおりです。
public class MyModelMetaDataProvider : DataAnnotationsModelMetadataProvider
{
protected new MyModelMetaData CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
{
ModelMetadata modelMetaData = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
MyModelMetaData myMetaData = (MyModelMetaData)modelMetaData;
return myMetaData;
}
}
public class MyModelMetaData: ModelMetadata
{
public MyModelMetaData(ModelMetadataProvider provider, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
: base(provider, containerType, modelAccessor, modelType, propertyName)
{
}
public int MyProperty { get; set; }
}
次に、グローバル asax で次を使用します。
ModelMetadataProviders.Current =new MyModelMetaDataProvider();
問題は、認識されないビューで MyProperty を使用しようとした場合です。これは、VS がカスタム ModelMetadata クラスを認識していないためです。
これが可能かどうかさえわかりませんか?