我正在构建自定义MetadataProvider,我想在CreateMetadata
方法中访问实际模型值。
public class IcpMetadataProvider : AssociatedMetadataProvider
{
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
{
var metadata = new ModelMetadata(this, containerType, modelAccessor, modelType, propertyName);
//Is null when the model is of reference type
var model = metadata.Model;
return metadata;
}
}
当前模型值的类型为字符串时,可以在metadata.Model
中找到模型值。但是当模型是引用类型时,该值为null。
或者有没有办法将自定义数据传递给此方法?
答案 0 :(得分:1)
引用Brad Wilson,您需要“调用base.CreateMetadata,以便您可以获取填充了DataAnnotations值的ModelMetadata,然后使用您自己的属性中的值补充它。”
参考链接:http://bradwilson.typepad.com/blog/2010/01/why-you-dont-need-modelmetadataattributes.html