안녕,양식
나는 ASP.NET MVC 응용 프로그램을 구축하고을 (자동 매핑을) 문제를 모델과 데이터 처리에 일부 문제가있는 볼 수 있습니다. 내 행동의
하나는 다음과 같습니다
public ActionResult Register(int categoryId, int? filterId)
DB (엔티티 프레임 워크)의 데이터 객체를 뷰 모델 사용자 정의를로드하는 것을 의미한다이 경우 등록 양식과 instansiate과 보낼 것이 작업 그것은 강력하게 유형화 된 뷰에 적용됩니다.
는[CustomAuthorize(Roles = SiteRoles.Admin)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(ModelViewRegisterFilter filter)
이 작업은 실행됩니다 :
내가 사용자가 데이터를 수정하고 명중 한 경우 AutoMapper를 사용하여 따라와 행동이 발생됩니다 제출하고 뷰 개체 모듈 개체를 변환하려면 코드를 따르십시오 :
if(filter.EditingFilter.Id > 0)
adCategoryFilter = Mapper.Map<RegisterFilterItem, AdCategoryFilter>(filter.EditingFilter, filterModel.GetFilter(filter.EditingFilter.Id));
else
adCategoryFilter = Mapper.Map<RegisterFilterItem, AdCategoryFilter>(filter.EditingFilter);
adCategoryFilter는 Model (db)의 클래스입니다. 이 작업이 끝나면 엔티티 모델 객체 (adCategoryFilter)를 저장하는 데 문제가 없어야합니다.
문제 1 나는 db 테이블 caled DisplayCheckBox에 필드가 있으며 nullable tinyint 유형입니다. 이를 표현하기 위해 내 뷰 객체에 nullable bool을 만들었습니다. 모델 뷰에 모델로 변환하는 AutoMapper를 사용할 때 나는 다음과 같은 예외를 얻을 :
이 System.Nullable`1 [선택 System.Boolean, mscorlib에, 버전 = 4.0 System.Byte을지도하려고합니다. 0.0, 문화 = 중립, PublicKeyToken = b77a5c561934e089]]. Biss.Models.Model.AdCategoryFilter에 대한 매핑 구성을 사용 Biss.Views.ViewClasses.RegisterFilterItem 대상 속성 에 : 유형 의 DisplayCheckBox 예외 'AutoMapper.AutoMapperMappingException' 가 발생했다.
나는 모델 클래스의 생성 된 속성을 cheked하고는 같이 :
Nullable<global::System.Byte>
문제 2 양식이 양식에서 뷰 모델 객체가 데이터로 채워집니다 제출 . 값이 ""(string.empty) 인 textBox가 있으면 문자열이 null로 설정됩니다.
이 텍스트 상자를 나타내는 db 필드는 nchar (100) 유형이며 엔터티 프레임 워크에서 문자열로 생성됩니다. 문제는 그 automapper 모델 개체의 DisplayTextBox 속성에 null 값을 설정하기 위해 노력할 것입니다 그리고는 따라와 예외가 발생합니다 :
이 속성은 null 값으로 설정 할 수 없습니다.
감사합니다.
는 사실, Automapper 대한 포인트가 올바르지 다음은 바인딩 속성을 사용하는 방법에 대한 괜찮은 기사입니다. 그가해야 할 일은 Map을 호출하기 전에 CreateMap를 호출하는 것뿐입니다. –
rboarman
이상 하네. 나는 특별한 일을 할 필요없이 그 곳곳에 AM을 사용했습니다. – rboarman
이것은 새로운 질문을 생성합니다. 1 = 바인드 속성을 사용하면 일부 속성이 제외됩니다. AutoMapper를 사용하여 ViewObject를 DataModelObject에 매핑 할 때이 기능은 어떻게 작동합니까? DB (DataModelObject)의 "실제"데이터가 ViewObject의 설정되지 않은 속성으로 대체 될 수 있습니까? – Banshee