MVC Model Binding
-
18-09-2019 - |
Pergunta
Eu estou usando a biblioteca de validação MVC de link de texto . Eu escolhi esta biblioteca porque eu também estou usando .NetTiers que gera toda a atributos de validação usando o MS Enterprise Library Validation Blocks.
Ele funciona muito bem, exceto que a ligação que o modelo é automaticamente validar o objeto e preencher o resumo de validação. Eu acredito que esta no comportamento normal.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register([Bind()]NetTiersObject obj)
{
return View();
}
A biblioteca de validação também tem um método que está documentado da seguinte forma:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register([Bind()]NetTiersObject obj)
{
try
{
obj.Validate<NetTiersObject>();
}
catch (EntityValidationException ex)
{
ViewData.ModelState.PopulateWithErrors(ex);
}
return View();
}
Isso também funciona bem.
Meu problema é que quando se utiliza o método da biblioteca de validação que duplica as mensagens de erro. Quando apenas usando o modelo de ligação as mensagens de erro estranha. Os erros têm o nome da propriedade na mensagem.
Então, eu acho que deveria qualquer necessidade de formatar o modelo de ligação mensagens de erro ou desativar modelo de ligação completo.
Qualquer recomendação, ajuda?
Graças.
Solução 2
Eu encontrei a resposta para por que o meu ModelState era inválido. Os elementos do formulário não corresponder-se com o modelo, que é a única maneira que o ModelState seria inválida imediatamente.
Se eu encontrar mais detalhes Vou atualizar este post.
Outras dicas
Tenha tentar:
/*At the Point the ModelState should be Valid(TRUE)
because we still didn't enforce any validations */
var v = ModelState.IsValid;
try
{
obj.Validate<NetTiersObject>();
}
catch (EntityValidationException ex)
{
ViewData.ModelState.PopulateWithErrors(ex);
}
e verificar se v for True, ele deve ser.
Se é verdade obj.Validate<NetTiersObject>();
então está fazendo algo errado, porque é a única que povoam os erros duplicados.
Meu problema é que quando se utiliza o que o método de biblioteca de validação duplica as mensagens de erro. Quando apenas usando a ligação do erro de modelo mensagens parecer estranho. os erros tem o nome da propriedade na mensagem.
A sua é estranho porque o ModelBinding deve erros modelo não preencher, pelo menos se você não estiver usando um modelo de ligação personalizada ou tentando gravar a DB sem validar campos.