none
Validação DropDownList ASP.NET MVC RRS feed

  • Pergunta

  • Olá pessoal...

    Estou com um pequeno problema e acredito que podem me ajudar.

    Tenho um controller chamado DownloadsController que implementa duas actions create, conforme abaixo.

     

    public ActionResult Create()
        {
          var categoriasDownloads = from catDown in modelo.tbCategoriasDownloads
                       orderby catDown.TituloCategoriaDownload ascending
                       select catDown;
    
          ViewData["CategoriasDownloads"] = new SelectList(categoriasDownloads, "IDCategoriaDownloads", "TituloCategoriaDownload");
    
          var formatosArquivos = from formatosDown in modelo.tbFormatosArquivos
                      orderby formatosDown.NomeFormatoSigla
                      select formatosDown;
    
          ViewData["FormatosArquivos"] = new SelectList(formatosArquivos, "IDFormatoArquivo", "NomeFormatoSigla");
    
          return View();
        }
    

    E outra action que Create, mas esta faz o Postback:

    [HttpPost]
        public ActionResult Create(tbDownloads _novoDownload)
        {
          TryUpdateModel(modelo);
          TryUpdateModel(modelo.tbDownloads);
    
          if (ModelState.IsValid)
          {
            modelo.AddTotbDownloads(_novoDownload);
            modelo.SaveChanges();
    
            return RedirectToAction("Sucesso", "Mensagens");
          }
    
          return View(_novoDownload);
        }
    

    Como estou utilizando o Entity Framework e Data Annotations pra validar o modelo, criei uma nova classe "tbDownloads" para a validação dos dados. O problema é que, quando tento validar os DropDownLists, a validação na verdade não ocorre e dá erro, pois os campos são chaves na tabela. A seguir um exemplo da classe de validação com MetadataType.

    [MetadataType(typeof(DownloadsMetadata))]
      public partial class tbDownloads
      {
      }
    
      public class DownloadsMetadata
      {
        [Required(ErrorMessageResourceName="Por favor, selecione uma opção")]
        public Int64 IDCategoriaDownloads { get; set; }
      }
    

    Como faço pra validar estes dropdownlists, ou seja, como texto se o usuário realmente selecionou algum valor no DDL?

    Grato,

    Fabrício Sanchez

     

    sexta-feira, 29 de outubro de 2010 12:14

Todas as Respostas

  • Fala Fabrício,

    Tenta trocar isso:

    public class DownloadsMetadata
    {
       [Required(ErrorMessageResourceName="Por favor, selecione uma opção")]
       public Int64 IDCategoriaDownloads { get; set; }
    }

    Por isso:

    public class DownloadsMetadata
    {
       [Required(ErrorMessageResourceName="Por favor, selecione uma opção")]
       public Int64? IDCategoriaDownloads { get; set; }
    }

    Pois com Int64, a propriedade está inicializada com 0 (zero). Ou seja, está preenchido... E a validação deixa passar...

     


    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    sexta-feira, 29 de outubro de 2010 13:44
    Moderador
  • Olá André...

    Em primeiro lugar obrigado pela sugestão.
    Tentei executar o que sugeriu mas ainda assim o erro persiste.

    Alguma outra idéia?

    Grato,

    Fabrício Sanchez

    segunda-feira, 1 de novembro de 2010 14:12
  • Fala Fabrício,

    Posta aqui como está a sua View...



    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    segunda-feira, 1 de novembro de 2010 14:14
    Moderador