AnswerBun.com

Validação para DropDownList em ASP.NET MVC

Stack Overflow em Português Asked by Leo on November 26, 2020

Estou realizando um projeto, nele estava fazendo um DropDownList que pega os dados do banco e mostra ao usuário. Até certo ponto deu tudo certo, mas falta uma parte de tratamento, ou uma validação, pois toda vez que alguma caixa de texto está em branco, ele para a aplicação e da este erro

System.InvalidOperationException: 'O item ViewData que possui a chave 'idCategoria' é do tipo 'System.String', mas precisa ser do tipo 'IEnumerable<SelectListItem>'.'

Esse erro sempre ocorre quando quando eu passo uma SelectList usando uma ViewBag

Tenho os seguintes códigos:

Model Produto

public class Produto
{
    private ConexaoDB db;

    [Display(Name = "Código")]
    [StringLength(5, ErrorMessage = "Máximo 5 caracteres")]
    [Key]
    public string idProduto { get; set; }

    [Display(Name = "Nome")]
    [Required(ErrorMessage = "O campo é obrigatório")]
    [StringLength(50, ErrorMessage = "Máximo 50 caracteres")]
    public string nome { get; set; }

    [Display(Name = "Preço Unitário")]
    [Required(ErrorMessage = "O campo é obrigatório")]
    public decimal precoUnitario { get; set; }

    [Display(Name = "Categoria")]
    [Required(ErrorMessage = "O campo é obrigatório")]
    public string idCategoria { get; set; }

    public IEnumerable<SelectListItem> CategoryList { get; set; }

 ...

    public List<Categoria> ListarCategoria()
{
    var strQuery = "select idCategoria, nome from categoria";

    using (db = new ConexaoDB())
    {
        var retorno = db.RetornaRegistro(strQuery);
        return ListaDeCategoria(retorno);
    }
}

public List<Categoria> ListaDeCategoria(MySqlDataReader retorno)
{
    var categorias = new List<Categoria>();
    while (retorno.Read())
    {
        var TempCategoria = new Categoria()
        {
            idCategoria = retorno["idCategoria"].ToString(),
            nome = retorno["nome"].ToString()
        };
        categorias.Add(TempCategoria);
    }
    return categorias;
}

...


}

ProdutoController

public ActionResult Create()
{
    var objproduto = new Produto();
    var leitor = objproduto.ListarCategoria();
    ViewBag.List = new SelectList(leitor, "idCategoria", "nome");
    return View();
}

// POST: Produto/Create
[HttpPost]
public ActionResult Create(Produto produto)
{
    if (ModelState.IsValid)
    {
        var objproduto = new Produto();
        objproduto.InsertProduto(produto);

        return RedirectToAction("Details");
    }
    return View(produto);
}

View

<div class="form-group">
    @Html.LabelFor(model => model.idCategoria, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownListFor(model => model.idCategoria, ViewBag.List as SelectList, "-- Selecione a categoria --", new { @required = "required", @class = "form-control" })
        @Html.ValidationMessageFor(model => model.idCategoria, "", new { @class = "text-danger" })
    </div>
</div>

Como posso resolver este problema?

Add your own answers!

Related Questions

Como desabilitar o required quando o seu input não estiver visível

2  Asked on January 17, 2021 by bruno-henrique

     

Evento onchange do datepicker em HTML5

1  Asked on January 16, 2021 by rodrigo-santos

       

Programa usando malloc duas vezes

3  Asked on January 16, 2021 by gabriel-vinicius

     

Como ocultar informações sensíveis no Django?

3  Asked on January 15, 2021 by vinicius-bussola

         

Flexbox deixa as imagens redimensionadas

1  Asked on January 15, 2021 by niko

   

Posso utilizar um iPhone para testar um app Xamarin?

3  Asked on January 14, 2021 by gustavo-oliveira

         

Alterar posição do elemento com JavaScript

1  Asked on January 13, 2021 by vernica-emschermann

   

Consumir API REST de um endpoint HTTPS com Angular 10 (CORS)

0  Asked on January 13, 2021 by phelipe-chiarelli

         

API REST Consultando outra API

1  Asked on January 13, 2021 by letcia-helena

       

Cliente e Servidor socket com Indy

1  Asked on January 12, 2021 by tonico-bittencourt

     

Como passar uma struct alocada dinamicamente para uma função em C?

1  Asked on January 12, 2021 by larissa-benevides-vieira

         

Como testar exports de um package?

1  Asked on January 11, 2021 by felipe-avelar

   

Somando varios inputs com mesmo id jquery ou javaScript

1  Asked on January 9, 2021 by joao_vitor

     

Solução simples para algoritmo de Fibonacci

6  Asked on January 9, 2021 by joo-laurent

       

“min()” com dois parâmetros

1  Asked on January 8, 2021 by wesley

   

Solr, Lucene e ElasticSearch quais as diferenças? Quando usar um ou outro?

1  Asked on January 7, 2021 by guilherme-de-jesus-santos

       

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir