Problem
I have a list of fields that the user can edit. When the model is submitted I want to check if this items are valid. I can't use data notations because each field has a different validation process that I will not know until runtime. If the validation fails I use the ModelState.AddModelError(string key, string error) where the key is the name of the html element you want to add the error message to. Since there are a list of fields the name that Razor generates for the html item is like Fields[0].DisplayName. My question is there a method or a way to get the key of the generated html name from the view model?
Attempted Solution
I tried the toString() method for the key with no luck. I also looked through the HtmlHelper class but I didn't see any helpful methods.
Code Snippet
View Model
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; }
    }
}
Controller
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);
    }
}