Usuário com melhor resposta
Gravação/Validação dos dados.

Pergunta
-
Estou com uma dúvida..
Supondo que eu tenha um model com 5 propriedades(todas com Required) que é usada em muitas páginas diferentes..
Se eu criar uma nova página e precisar salvar um obj deste model sendo nenhuma propriedade é obrigatória, qual a melhor forma de fazer?
http://www.linkedin.com/pub/murilo-kunze/44/191/455
Respostas
-
Olá Murilo,
Isto esta ocorrendo porque as colunas da sua tabela estão setadas para serem obrigatórias e que não aceitam valores nulos, e quando você o mapeia para o entity ele faz esta validação antes para dar um insert no banco.
o que você poderia fazer é permitir valores nulos na tabela, atualizar o entity model, e usar viewModels com DataAnimations para fazer a validação, aí você cria uma viewModel para cada tipo de situação e depois de validada você a mapeia para sua entidade e aplica o saveChanges().
http://stephenwalther.com/blog/archive/2009/04/13/asp-net-mvc-tip-50-ndash-create-view-models.aspxhttp://imasters.com.br/artigo/18900/desenvolvimento/entendendo-o-pattern-model-view-viewmodel-mvvm
"Faça as coisas da forma mais simples possível. Mas não mais simples do que isto" - Albert Einstein
- Sugerido como Resposta Wilian NS quinta-feira, 29 de março de 2012 16:11
- Marcado como Resposta welington jrModerator terça-feira, 6 de março de 2018 15:55
Todas as Respostas
-
Ola Murilo,
Você pode usar o model normalmente, apenas use o Bind Attribute para especificar que você não quer que ele valide os campos deste modo:
public ActionResult Cadastrar([Bind(Exclude="Campo1,Campo2,Campo3,Campo4,Campo5")] MeuModelo modelo) { //Toda lógica do controllador aqui }
"Faça as coisas da forma mais simples possível. Mas não mais simples do que isto" - Albert Einstein
-
Murilo, Não entendi bem, mas vou tentar explicar oque compreendi,
Digamos que eu tenha uma classe com 5 parametros e utilizo esta em várias páginas,. esta classe tem o REQUIRED em todas as propriedades,
Quando crio uma view específica e não quero utilizar o REQUIRED por algum motivo eu utilizo a validação direta no Controller.
por exemplo:
public ActionResult Contato() { return view(); } [HttpPost] public ActionResult Contato(Contato contato) { ValidaCampos(); if(ModelState.Isvalid) { //Faz alguma coisa } return redirectToAction("Index","Home"); //por exemplo } public void ValidaCampos(Contato contato) { if(String.IsnullOrEmpty(contato.Nome)) ModelState.AddError("Nome","Nome é requerido!"); }
Espero que ajude....
Qualquer dúvida, posta ai
http://fparmezani.wordpress.com
-
-
Boa noite Oliveira.
Não estou conseguindo retirar as validações.
Tenho uma action assim:
[HttpPost] public ActionResult Create([Bind(Exclude="Nome,SobreNome")]Pessoa pessoa) { db.Pessoas.Add(pessoa); db.SaveChanges(); return RedirectToAction("Index"); }
e um Model com 2 propriedades(Nome e SobreNome) com Required.
Mas está ocorrendo erro na hora de realizar o SaveChanges:
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
http://www.linkedin.com/pub/murilo-kunze/44/191/455
-
Olá Murilo,
Isto esta ocorrendo porque as colunas da sua tabela estão setadas para serem obrigatórias e que não aceitam valores nulos, e quando você o mapeia para o entity ele faz esta validação antes para dar um insert no banco.
o que você poderia fazer é permitir valores nulos na tabela, atualizar o entity model, e usar viewModels com DataAnimations para fazer a validação, aí você cria uma viewModel para cada tipo de situação e depois de validada você a mapeia para sua entidade e aplica o saveChanges().
http://stephenwalther.com/blog/archive/2009/04/13/asp-net-mvc-tip-50-ndash-create-view-models.aspxhttp://imasters.com.br/artigo/18900/desenvolvimento/entendendo-o-pattern-model-view-viewmodel-mvvm
"Faça as coisas da forma mais simples possível. Mas não mais simples do que isto" - Albert Einstein
- Sugerido como Resposta Wilian NS quinta-feira, 29 de março de 2012 16:11
- Marcado como Resposta welington jrModerator terça-feira, 6 de março de 2018 15:55