Как получить ключ ModelState элемента в списке

Проблема

У меня есть список полей, которые пользователь может редактировать. Когда модель отправлена, я хочу проверить, действительны ли эти элементы. Я не могу использовать обозначения данных, потому что каждое поле имеет свой процесс проверки, о котором я не узнаю до времени выполнения. Если проверка не удалась, я использую ModelState.AddModelError(строковый ключ, строковая ошибка), где ключ — это имя элемента html, к которому вы хотите добавить сообщение об ошибке. Поскольку существует список полей, имя, которое Razor генерирует для элемента html, похоже на Fields[0].DisplayName. Мой вопрос, есть ли метод или способ получить ключ сгенерированного имени html из модели представления?

Попытка решения

Я попробовал метод toString()для ключа, но безуспешно. Я также просмотрел класс HtmlHelper, но не нашел никаких полезных методов.

Фрагмент кода

Модель представления

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

Контроллер

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);
    }
}
19
задан EL Yusubov 19 June 2012 в 19:51
поделиться