이 문제는 설명하기가 조금 어렵 기 때문에 예제를 제공하려고합니다. 내가보기에 다음과 같은 말한다면런타임에 편집기 템플릿
public class Form {
public IList<FieldResult<object>> Results { get; set; }
public Form(IList<Field> fields) {
Results = fields.Select(f => new FieldResult<object>(f)).ToList();
}
}
가 :
@foreach (var result in Model.Results) {
@Html.EditorFor(m => result, "CheckBoxField")
}
을 지금은이 말을
public class FieldResult<T> {
public Field Field { get; set; }
public T Answer { get; set; }
public FieldResult(Field field) {
Field = field;
}
}
지금 나는 다음 뷰 모델을 가지고 말 : 나는 다음과 같은 유형이 말 다음 CheckBoxField 편집기 템플릿 :
@model FieldResult<bool>
@Html.CheckBoxFor(m => m.Answer)
그것은 모두가 잘 컴파일하지만 런타임에 다음과 같은 오류가 발생합니다 : 사전에 전달
모델 항목 유형 이다 '
1[System.Object]', but this dictionary requires a model item of type 'FieldResult
1 [선택 System.Boolean] FieldResult'.
누군가가 가능하다고 말할 수 있고 가능한 방법을 제안 할 수 있다면 감사하겠습니다. 감사합니다
감사합니다. "서식 파일은 필드 액세스, 속성 액세스, 단일 차원 배열 인덱스 또는 단일 매개 변수 사용자 지정 인덱서 식에만 사용할 수 있습니다."라는 오류가있었습니다. 그래서 저는 편집기 외부에서 캐스트를 가져 와서 변수에 저장하고 올바르게 표시했습니다. 나는 더 많은 일을 해줄 필요가 있지만 지금 올바른 방향으로 나를 보내 주셔서 감사합니다. – nfplee
당신 말이 맞아요, 제 대답을 편집했습니다 –
방금 시험을 마쳤습니다. 그리고 이것은 잘 작동하고 있습니다. 나는 많은 쓰레기 코드를 제거 할 수 있었고,이 접근법을 통해 각 필드 유형에 대한 사용자 정의 유효성 검사를 수행 할 수있었습니다. 다시 한번 감사드립니다. – nfplee