none
modelState.Valid igual a false RRS feed

  • Pergunta

  • Tenho uma classe de usuário onde tenho muitos campos, mais no create nem todos os campos precisam ser gravados, por isso tirei alguns do formulário, tenho que colocar todos os campos no formulário ? tenho como saber quais esses erros ? 

    Junior

    terça-feira, 19 de abril de 2016 00:06

Respostas

  • Você só precisa gravar os obrigatórios, mascados com Required, conforme o Silvaney mencionou.

    Pra ver os erros você pode usar isso na sua controller:

    var allErrors = ModelState.Values.SelectMany(v => v.Errors);


    Ou:

    var allErrors = string.Join("; ", ModelState.Values
                                            .SelectMany(x => x.Errors)
                                            .Select(x => x.ErrorMessage));

    Outra forma é adicionar a mensagem na View, seria assim:

    @Html.ValidationSummary(false, "Verifique os itens abaixo:")

    Com CSS você pode remover a div da mensagem quando não há erro, basta adicionar ao seu CSS esta regra:
    .validation-summary-valid
    {
        display: none;
    }


    • Marcado como Resposta Junior_luiz quarta-feira, 20 de abril de 2016 00:15
    terça-feira, 19 de abril de 2016 05:41

Todas as Respostas

  • Boa noite,

    Junior, até onde eu entendo sim você deve passar todos os campos na qual você definiu como obrigatório "Required".
    Se você possui muitos campos na qual não necessita de validações acredito que a solução seria criar uma outra classe ou então remover a validação "modelState" e validar no código.


    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 19 de abril de 2016 01:45
  • Você só precisa gravar os obrigatórios, mascados com Required, conforme o Silvaney mencionou.

    Pra ver os erros você pode usar isso na sua controller:

    var allErrors = ModelState.Values.SelectMany(v => v.Errors);


    Ou:

    var allErrors = string.Join("; ", ModelState.Values
                                            .SelectMany(x => x.Errors)
                                            .Select(x => x.ErrorMessage));

    Outra forma é adicionar a mensagem na View, seria assim:

    @Html.ValidationSummary(false, "Verifique os itens abaixo:")

    Com CSS você pode remover a div da mensagem quando não há erro, basta adicionar ao seu CSS esta regra:
    .validation-summary-valid
    {
        display: none;
    }


    • Marcado como Resposta Junior_luiz quarta-feira, 20 de abril de 2016 00:15
    terça-feira, 19 de abril de 2016 05:41
  • Silvaney, quanto aos campos obrigatórios são poucos e todos eu estou passando dados, alguns campos inteiros e outros date aceitam nulos, portanto acho que não são obrigatórios, será que se eu tirar esses campos do comando bind resolve ? No total são 18 campos, mais obrigatórios gravar somente 4.

    Junior

    terça-feira, 19 de abril de 2016 11:16
  • Cesar eu coloquei esse comando mais não achei nenhum campos com erros = 1, são 18 campos.

    Junior

    terça-feira, 19 de abril de 2016 11:21
  • Bom dia,

    Junior, uma sugestão seria fazer o que o Cesar disse, obter os campos com "erros".
    Coloque um "breakpoint" na lista e você vai identificar os campos:

    var allErrors = ModelState.Values.SelectMany(v => v.Errors).ToList();

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    terça-feira, 19 de abril de 2016 11:49
  • Tinha alguns campos com valores errados.

    Junior

    quarta-feira, 20 de abril de 2016 00:15