ASP.NET MVC Custom MetadataProvider

时间:2010-05-21 10:21:16

标签: asp.net-mvc modelmetadata

我正在构建自定义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。

或者有没有办法将自定义数据传递给此方法?

1 个答案:

答案 0 :(得分:1)

引用Brad Wilson,您需要“调用base.CreateMetadata,以便您可以获取填充了DataAnnotations值的ModelMetadata,然后使用您自己的属性中的值补充它。”

参考链接:http://bradwilson.typepad.com/blog/2010/01/why-you-dont-need-modelmetadataattributes.html