Não é possível obter o valor do atributo personalizado no MVC3 HTML Helper

Estendi o auxiliar HTML com um método que precisa de um valor de atributo da propriedade do modelo. Então, eu defini um atributo personalizado como ta

    public class ChangeLogFieldAttribute : Attribute {
        public string FieldName { get; set; }
    }

É usado assim no meu modelo.

    [Display(Name = "Style")]
    [ChangeLogField(FieldName = "styleid")]
    public string Style { get; set; }

No meu método auxiliar, eu tenho o código a seguir para obter o valor FieldName do meu atributo, se o atributo for usado para a propriedad

        var itemName = ((MemberExpression)ex.Body).Member.Name;

        var containerType = html.ViewData.ModelMetadata.ContainerType;
        var attribute = ((ChangeLogFieldAttribute[])containerType.GetProperty(html.ViewData.ModelMetadata.PropertyName).GetCustomAttributes(typeof(ChangeLogFieldAttribute), false)).FirstOrDefault();
        if (attribute != null) {
            itemName = attribute.FieldName;
        }

No entanto, quando chego a esse código, recebo uma exceção porque o containerType é nul

Não tenho certeza se estou fazendo isso corretamente, mas usei cerca de 4 fontes diferentes para chegar até aqui. Se você pudesse sugerir uma correção para o meu problema ou uma alternativa, ficaria muito grat

Obrigado

ATUALIZAÇÃO COM SOLUÇÃO

Eu usei a solução de Darin Dimitrov, apesar de precisar ajustá-la um pouco. Aqui está o que eu adicionei. Eu tive que verificar a existência do atributo metatdata e tudo estava be

        var fieldName = ((MemberExpression)ex.Body).Member.Name;

        var metadata = ModelMetadata.FromLambdaExpression(ex, html.ViewData);
        if (metadata.AdditionalValues.ContainsKey("fieldName")) { 
            fieldName = (string)metadata.AdditionalValues["fieldName"];
        }

questionAnswers(1)

yourAnswerToTheQuestion