Cómo obtener una clave ModelState de un elemento en una lista

Problema

Tengo una lista de campos que el usuario puede editar. Cuando se envíe el modelo, quiero comprobar si estos elementos son válidos. No puedo usar notaciones de datos porque cada campo tiene un proceso de validación diferente que no conoceré hasta el tiempo de ejecución. Si la validación falla, utilizo elModelState.AddModelError(string key, string error) donde la clave es el nombre del elemento html al que desea agregar el mensaje de error. Dado que hay una lista de campos, el nombre que Razor genera para el elemento html es comoFields[0].DisplayName. ¿Mi pregunta es si hay un método o una forma de obtener la clave del nombre html generado del modelo de vista?

Intento de solucion

Probé eltoString() Método para la llave sin suerte. También miré a través delHtmlHelper Clase pero no vi ningún método útil.

Fragmento de código

Ver modelo

public class CreateFieldsModel
{
    public TemplateCreateFieldsModel()
    {
        FreeFields = new List<FieldModel>();
    }

    [HiddenInput(DisplayValue=false)]
    public int ID { get; set; }

    public IList<TemplateFieldModel> FreeFields { get; set; }


    public class TemplateFieldModel
    {
        [Display(Name="Dispay Name")]
        public string DisplayName { get; set; }

        [Required]
        [Display(Name="Field")]
        public int FieldTypeID { get; set; }
    }
}

Controlador

public ActionResult CreateFields(CreateFieldsModel model)
{
    if (!ModelState.IsValid)
    {
        //Where do I get the key from the view model?
        ModelState.AddModelError(model.FreeFields[0], "Test Error");
        return View(model);
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta