Como obter uma chave ModelState de um item em uma lista

Problema

Eu tenho uma lista de campos que o usuário pode editar. Quando o modelo é enviado, quero verificar se esses itens são válidos. Eu não posso usar notações de dados porque cada campo tem um processo de validação diferente que eu não conhecerei até o tempo de execução. Se a validação falhar eu uso oModelState.AddModelError(string key, string error) onde a chave é o nome do elemento html que você deseja adicionar a mensagem de erro. Como há uma lista de campos, o nome que o Razor gera para o item html é comoFields[0].DisplayName. Minha pergunta é que existe um método ou uma maneira de obter a chave do nome html gerado a partir do modelo de visualização?

Tentativa de Solução

Eu tentei otoString() método para a chave sem sorte. Eu também olhei através doHtmlHelper classe, mas eu não vi nenhum método útil.

Fragmento de código

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

questionAnswers(2)

yourAnswerToTheQuestion