뷰 모델이 도메인 모델만큼 필드가 많지 않은 경우 MVC에서 값을 어떻게 무시/지속합니까?

StackOverflow https://stackoverflow.com/questions/1274575

문제

FluentNHibernate 및 ASP.NET MVC를 사용하는 사이트가 있습니다. 사용자가 해당 레코드 (객체)의 10 가지 속성 중 8 개를 편집 할 수있는 편집보기가 있습니다. 양식을 제출하고 모델 바인드가 제출되면 두 개의 편집 할 수없는 필드가 뷰 모델로 비어있는 문자열 또는 속성 유형에 따라 기본 데이터 타임 값으로 다시 나타납니다.

또한 Automapper를 사용하여 뷰 모델을 도메인 엔티티에 매핑하기 때문에 데이터베이스에서 내 객체의 새로운 사본을로드하고 2 개의 누락 된 속성을 수동으로 설정할 수 없습니다. 편집하고 싶지 않은 필드를 지속하는 가장 좋은 방법은 무엇입니까?

작동하는 한 가지 방법은 내 견해에 숨겨진 입력 필드의 값을 지속하는 것입니다. 그것은 효과가 있지만 심한 느낌입니다. 권장 사항에 감사드립니다. 이 원하는 기능을 구성 할 수있는 방법이 있습니까?

업데이트:좋아, 나는 필드를 무시하려고하지 않는다고 생각한다. 나는 무효 또는 빈 문자열 값을 지속하지 않도록 노력하고있다. Automapper의 필드를 무시하는 것은 그 일을합니다. 저장에 저장하기 전에 매핑하려고 할 때 무시되고 무시됩니다.

도움이 되었습니까?

해결책

ASP.NET MVC DefaultModelBinder가 확장 가능하며이를 재정의하여 자신의 바인딩 스키마를 만들 수 있습니다. 그러나 여기에는 두 개의 "숨겨진 입력 필드"보다 더 많은 작업이 포함될 것입니다.이 관점에서, 내 관점에서는 그다지 거칠지 않습니다.

다른 팁

Automapper에 두 가지 속성을 무시하도록 지시 할 수 있습니다.

Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.SomeValuefff, opt => opt.Ignore());

가능한 관련 질문.

텐트를 받아들이는 automapper.map 오버로드를 사용할 수 있습니까?!

entity = Mapper.Map(viewmodel, entity);

뷰 모델에 속성이없는 한 엔티티의 값을 변경하지 않습니다. 엔티티가 전달되는 엔티티를 가져 가고 뷰 모델에서 속성 만 엔터티에 적용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top