2

我正在构建一个自定义 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. 但是当模型是引用类型时,该值为空。

或者也许有什么方法可以将自定义数据传递给这个方法?

4

1 回答 1

1

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

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

于 2011-02-17T01:40:54.480 回答