문제 나 사용자가 편집 할 수있는 필드 목록을어떻게 목록
에서 항목의 ModelState 키를 얻을 수 있습니다. 모델이 제출되면이 항목이 유효한지 확인하고 싶습니다. 각 필드에는 런타임까지 알 수없는 다른 유효성 검사 프로세스가 있으므로 데이터 표기법을 사용할 수 없습니다. 유효성 검사가 실패하면 ModelState.AddModelError(string key, string error)
을 사용합니다. 여기서 키는 오류 메시지를 추가 할 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);
}
}
이것은 좋은 일이지만 멋진 확장 메서드에서이 논리를 감싸는 또 다른 게시물을 발견했습니다. http://stackoverflow.com/a/12689563/1825109 – Michael12345