No se puede obtener un valor de atributo personalizado en MVC3 HTML Helper

Extendí el asistente HTML con un método que necesita un valor de atributo de la propiedad del modelo. Así que he definido un atributo personalizado como tal.

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

Se usa así en mi modelo.

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

En mi método de ayuda, tengo el siguiente código para obtener el valor FieldName de mi atributo, si el atributo se usa para la propiedad.

        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;
        }

Sin embargo, cuando llego a este código, obtengo una excepción porque el tipo de contenedor es nulo.

No estoy seguro si estoy haciendo algo de esto correctamente, pero tomé de aproximadamente 4 fuentes diferentes para llegar hasta aquí. Si pudiera sugerir una solución a mi problema o una alternativa, le agradecería.

Gracias

ACTUALIZAR CON SOLUCIÓN

Utilicé la solución de Darin Dimitrov, aunque tuve que modificarla un poco. Aquí está lo que agregué. Tuve que verificar la existencia de los metadatos del atributo y todo estuvo bien.

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

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta