Jak uzyskać klucz ModelState elementu na liście

Problem

Mam listę pól, które użytkownik może edytować. Po przesłaniu modelu chcę sprawdzić, czy te elementy są ważne. Nie mogę używać notacji danych, ponieważ każde pole ma inny proces sprawdzania poprawności, którego nie poznam do czasu wykonania. Jeśli walidacja nie powiedzie się, używamModelState.AddModelError(string key, string error) gdzie kluczem jest nazwa elementu HTML, do którego chcesz dodać komunikat o błędzie. Ponieważ istnieje lista pól, nazwa, którą generuje Razor dla elementu HTML, jest podobnaFields[0].DisplayName. Moje pytanie brzmi: czy istnieje metoda lub sposób na uzyskanie klucza wygenerowanej nazwy html z modelu widoku?

Próba rozwiązania

PróbowałemtoString() metoda na klucz bez szczęścia. Przejrzałem teżHtmlHelper klasa, ale nie widziałem żadnych pomocnych metod.

Fragment kodu

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

Kontroler

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