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