나는이 유사한 클래스가있는 경우 : firstName을 : 나는 정의 모델 바인더를 만들 때, 내 양식에서 포스트가 애완 동물에 전송되지 않습니다바인더가 서비스 계층이나 저장소 계층과 상호 작용해야하는 경우 사용자 지정 모델 바인더에서 개체를 검색해야하는 경우 ...?
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
public Pet myPet { get; set; }
}
,이 같은 데이터를 보낼 것 "을 myFirstName "lastName :"myLastName "myPet :"myPetsName "
실제 Pet 객체가 아닌 실제 Pet 객체가 전달되므로 Pet 객체를 모델 바인더 내에서 검색해야합니다.
제 질문은 모델 바인더가 서비스 계층, 저장소 계층과 상호 작용해야하는지 또는 애완 동물을 검색해야하는지 여부입니다. 나는를 만들 모델 바인더가 필요한 경우 ((this.ModelState) 나에게 오류를 제공)
_petService = new PetService(new ModelStateWrapper(this.ModelState));
을 : 서비스 레이어의 문제는 내가 서비스를 초기화하는 경우 ModelState에 대한 액세스 권한을 갖고있는 것 같다 없다는 것입니다 Person 객체가 있다면, 어떻게 든 애완 동물을 할당해야합니다 ... 어떻게해야합니까?
그래서 공개 문자열이 많이 포함 된 PetBinding 개체를 만들겠습니까? –
오른쪽 ... 컨트롤러 메소드에 대한 Ajax 호출을 수행하려면 바인딩하지 않아야합니다. 그러나 그것은 훨씬 더 깔끔하게 처리합니다 : public ActionResult Create (Person personToCreate) {} 실제로 매개 변수를 전달하는 대신 View가 입력을 받아 들일 필요가 있지만 입력이 이전에 유효성이 검사되는 한 양식이 제출되면 문제가되어서는 안됩니다. 그럼 정확히 내가하는 것이 어떻습니까? 정확히 언제 저장소에 충돌해야합니까? 그리고 유효성 검사가 서비스 계층에 있어야한다면 그와 상호 작용하지 않아야합니까? – Matt
제임스, 반드시 문자열이 아닙니다. 어떤 유형의 바인딩도 가능합니다. 그러나 뷰 모델은 일반적으로 뷰와 같이 구조화되어 있으므로 비즈니스 객체보다 "평평"합니다. –