MVC 프로젝트에서 AutoMapper를 배우기 시작했습니다. 성별 ("M"또는 "F"의 가능한 값)에 대한 문자열 필드가있는 기본 엔터티 "참석자"가 있습니다.Automapper - 문자열 속성을 SelectList로 변환 하시겠습니까?
이미 내 참석자와 내 AttendeeEditView 개체간에 기본 매핑이 만들어졌습니다. 내가하고 싶은 일은 모델 측의 "M"또는 "F"성별 문자열을 ViewModel 측의 SelectList로 변환하고 목록에서 적절한 값을 선택합니다.
public class GenderMenuResolver : ValueResolver<Attendee, SelectList> {
protected override SelectList ResolveCore(Attendee source) {
List<object> items = new List<object>(){
new{ Value = "F" , Text = "Female" },
new{ Value = "M" , Text = "Male" }
};
string Gender = source.Gender ?? "";
string selectedValue = new List<string>() { "M", "F" }.Contains(Gender.ToUpper()) ? Gender.ToUpper() : "";
SelectList GenderMenu = new SelectList(
items,
"Value",
"Text",
selectedValue
);
return GenderMenu;
}
}
그리고 내 매핑 코드 :
나는 내가 ValueResolver이 작업을 수행 할 필요가 있다고 생각 ... 여기에 내가 쓴 무엇
Mapper.CreateMap<Attendee, AttendeeEditView>()
.ForMember(dest => dest.Gender, opt => opt.ResolveUsing<GenderMenuResolver>());
List<AttendeeEditView> ViewModel = Mapper.Map<List<AttendeeEditView>>(Attendees);
이 코드가 실행을 볼 수 있습니다를 단계별로 적절한 선택 목록을 출력합니다. 그러나 다음과 같은 오류 메시지가 나타납니다.
먼저 ".Gender.Gender"매핑이 올바르지 않은 것 같습니다.
그러나 근본 문제로 보이는 것을 ... 내부 예외 메시지는이 계시 :
"Type 'System.Web.Mvc.SelectList' does not have a default constructor"
사람이 나를 내가 잘못, 혹은 더 나은 접근 방식은 내가 사용되어야 하는지를 확인하는 데 도움이 수 있습니까? 감사.
... 나는 또한 ViewModels를 사용하는 비교적 새로운 해요, 그래서 통찰력을 주셔서 감사합니다. 나는 이것을 시도 할 것이다. –