Se eu precisar para recuperar um objeto de um fichário de modelo personalizado deve interagem pasta com a camada de serviço, a camada de repositório, ou ...?
-
12-09-2019 - |
Pergunta
Se eu tiver uma classe semelhante a esta:
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
public Pet myPet { get; set; }
}
Quando eu criar um fichário de modelo personalizado, o post do meu formulário não será o envio de um animal de estimação, ele iria enviar dados como este: firstName: "myFirstName" lastName: "myLastName" mypet: "myPetsName"
Uma vez que o nome do animal de estimação é passado, e não o objeto real do animal de estimação, as necessidades objeto pet a ser recuperada dentro do fichário de modelo.
A minha pergunta é, se o fichário de modelo estar interagindo com a camada de serviço, a Camada de Repositório, ou deve mesmo ser recuperar o animal de estimação? O problema com a camada de serviço é que eu não parecem ter acesso a ModelState ao inicializar o serviço: ((this.ModelState) me dá um erro)
_petService = new PetService(new ModelStateWrapper(this.ModelState));
Se eu precisar o modelo de pasta para criar um objeto Pessoa, em seguida, o animal de estimação que precisam ser atribuído de alguma forma ... como vou fazer isso?
Solução
O que faço é usar um modelo de visão / apresentação em vez de se ligar a objetos de negócios. Lembre-se que os usuários podem inserir valores inválidos, e você terá que re-exibir esses valores inválidos para o usuário quando levando-os a corrigir seus erros. Mas seu negócio "real" objetos provavelmente não vai aceitar valores inválidos. Assim, o modelo de visão deve permitir qualquer entrada do usuário, mesmo de entrada os objetos de negócios não vai aceitar.
Isso faz a ligação fácil. Você não precisa bater um repositório para bind, somente quando a atualização do objeto de negócios com a entrada do usuário (válido).