DropDownList no C# com HtmlHelper

Question:

I'm new here and also new to the ASP.NET universe. I'm having a hard time creating a DropDownList for a form on a webpage with ASP.NET MVC and C# .

I made a user registration form and one of the items needs to be a DropDownList with the options: Administrator, Librarian, Teacher and Student, and the ID that each option has will be registered in the SQLServer database.

I saw some examples right here and on the net, but I still don't understand how to do it.

I have the Model, Controller and Views already done, I just wanted to know what I should put in each one to make the DropDownList work.

Model:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

namespace ProjetoBiblio.Models
{
    public class CadastroUser
    {
        /* DECLARAÇÃO DAS VARIÁVEIS */
        private int id_user, num_casa;
        private string tipo_user, cep, senha, cpf, nome, rua, complemento, bairro, cidade, estado, tel_resid, tel_cel, curso, turma;

        /* DECLARAÇÃO DOS GETTERS E SETTERS */
        [DisplayName("ID Usuário")]
        public int Id_User
        {
            get { return id_user; }
            set { id_user = value; }
        }
        [DisplayName("Tipo de usuário")]
        public string Tipo_user
        {
            get { return tipo_user; }
            set { tipo_user = value; }
        }
        [DisplayName("Senha")]
        public string Senha
        {
            get { return senha; }
            set { senha = value; }
        }
        [DisplayName("Nome")]
        public string Nome
        {
            get { return nome; }
            set { nome = value; }
        }
        [DisplayName("CPF")]
        public string Cpf
        {
            get { return cpf; }
            set { cpf = value; }
        }
        [DisplayName("CEP")]
        public string Cep
        {
            get { return cep; }
            set { cep = value; }
        }
        [DisplayName("Rua")]
        public string Rua
        {
            get { return rua; }
            set { rua = value; }
        }
        [DisplayName("Número")]
        public int Num_casa
        {
            get { return num_casa; }
            set { num_casa = value; }
        }
        [DisplayName("Complemento")]
        public string Complemento
        {
            get { return complemento; }
            set { complemento = value; }
        }
        [DisplayName("Bairro")]
        public string Bairro
        {
            get { return bairro; }
            set { bairro = value; }
        }
        [DisplayName("Cidade")]
        public string Cidade
        {
            get { return cidade; }
            set { cidade = value; }
        }
        [DisplayName("Estado")]
        public string Estado
        {
            get { return estado; }
            set { estado = value; }
        }
        [DisplayName("Telefone Residencial")]
        public string Tel_resid
        {
            get { return tel_resid; }
            set { tel_resid = value; }
        }
        [DisplayName("Telefone Celular")]
        public string Tel_cel
        {
            get { return tel_cel; }
            set { tel_cel = value; }
        }
        [DisplayName("Curso")]
        public string Curso
        {
            get { return curso; }
            set { curso = value; }
        }
        [DisplayName("Turma")]
        public string Turma
        {
            get { return turma; }
            set { turma = value; }
        }

        /* CRIAÇÃO DA CONEXÃO COM O BANCO DE DADOS */
        static SqlConnection connect = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectBD"].ConnectionString);

        /* MÉTODO PARA CADASTRAR USUARIO */
        internal string Cadastro()
        {
            try
            {
                /*ABRIR A CONEXÃO COM O BD */
                connect.Open();
                /* COMANDO PARA INSERIR AS INFORMAÇÕES NO BD */
                SqlCommand queryInsert = new SqlCommand("INSERT INTO USUARIOS VALUES(@tipo_usuario, @senha, @nome, @cpf, @cep, @rua, @numero_casa, @complemento, @bairro, @cidade, @estado, @tel_resid, @tel_cel, @curso, @turma);", connect);
                /* ATRIBUIR OS PARÂMETROS PARA CADA CAMPO NO BD */
                queryInsert.Parameters.AddWithValue("@tipo_usuario", tipo_user);
                queryInsert.Parameters.AddWithValue("@senha", senha);
                queryInsert.Parameters.AddWithValue("@nome", nome);
                queryInsert.Parameters.AddWithValue("@cpf", cpf);
                queryInsert.Parameters.AddWithValue("@cep", cep);
                queryInsert.Parameters.AddWithValue("@rua", rua);
                queryInsert.Parameters.AddWithValue("@numero_casa", num_casa);
                queryInsert.Parameters.AddWithValue("@complemento", complemento);
                queryInsert.Parameters.AddWithValue("@bairro", bairro);
                queryInsert.Parameters.AddWithValue("@cidade", cidade);
                queryInsert.Parameters.AddWithValue("@estado", estado);
                queryInsert.Parameters.AddWithValue("@tel_resid", tel_resid);
                queryInsert.Parameters.AddWithValue("@tel_cel", tel_cel);
                queryInsert.Parameters.AddWithValue("@curso", curso);
                queryInsert.Parameters.AddWithValue("@turma", turma);
                /* EXECUTA O COMANDO PARA INSERIR AS INFORMAÇÕES NO BD */
                queryInsert.ExecuteNonQuery();
            }
            /* CASO DÊ ERRO, APRESENTA A MENSAGEM */
            catch (Exception error)
            {
                return error.Message;
            }
            /* VERIFICA SE A CONEXÃO AINDA ESTÁ ABERTA */
            if (connect.State == System.Data.ConnectionState.Open)
            {
                connect.Close();
            }
            /* RETORNA MENSAGEM INFORMANDO QUE O CADASTRO DEU CERTO */
            return "Usuário cadastrado com sucesso!";
        }

        /* MÉTODO PARA CRIAR A LISTA DE USUÁRIOS */
        public static List<CadastroUser> Listar()
        {
            /* CRIAÇÃO DA LIST PARA ARMAZENAR OS DADOS DO BANCO DE DADOS */
            List<CadastroUser> listaCad = new List<CadastroUser>();
            /* TENTATIVA DE RESGATAR OS DADOS DO BANCO DE DADOS */
            try
            {
                /* ABRIR CONEXÃO COM O BANCO DE DADOS */
                connect.Open();

                /* COMANDO SQL PARA EXECUTAR NO BANCO */
                SqlCommand querySelect = new SqlCommand("SELECT * FROM USUARIOS", connect);

                /* EXECUTAR O COMANDO */
                SqlDataReader read = querySelect.ExecuteReader();

                /* OBTER AS INFORMAÇÕES DO BANCO DE DADOS PARA INSERIR NA LIST */
                while (read.Read())
                {
                    /* CRIAÇÃO DO OBJETO ESPECIALIDADE */
                    CadastroUser c = new CadastroUser();

                    /* ADICIONAR OS VALORES NOS CAMPOS DA LIST */
                    c.Id_User = int.Parse(read["ID_USUARIO"].ToString());
                    c.Tipo_user = read["TIPO_USUARIO"].ToString();
                    c.Senha = read["SENHA"].ToString();
                    c.Nome = read["NOME"].ToString();
                    c.Cpf = read["CPF"].ToString();
                    c.Cep = read["CEP"].ToString();
                    c.Rua = read["RUA"].ToString();
                    c.Num_casa = int.Parse(read["NUMERO_CASA"].ToString());
                    c.Complemento = read["COMPLEMENTO"].ToString();
                    c.Bairro = read["BAIRRO"].ToString();
                    c.Cidade = read["CIDADE"].ToString();
                    c.Estado = read["ESTADO"].ToString();
                    c.Tel_resid = read["TEL_RESID"].ToString();
                    c.Tel_cel = read["TEL_CEL"].ToString();
                    c.Curso = read["CURSO"].ToString();
                    c.Turma = read["TURMA"].ToString();

                    /* ADICIONAR AS INFORMAÇÕES NA LIST */
                    listaCad.Add(c);
                }
            }
            /* CASO DE ERRO, APRESENTAR A LIST VAZIA */
            catch (Exception error)
            {
                listaCad = new List<CadastroUser>();
            }
            /* FECHAR A CONEXÃO COM O BANCO DE DADOS */
            if (connect.State == System.Data.ConnectionState.Open)
            {
                connect.Close();
            }
            /* RETORNAR A INFORMAÇÃO CASO ESTEJA OK */
            return listaCad;
        }
        /* MÉTODO PARA BUSCAR OS DADOS DO CADASTRO E INSERIR NO FORMULÁRIO */
        public static CadastroUser BuscaCad(int id)
        {
            CadastroUser c = new CadastroUser();
            try
            {
                connect.Open();
                SqlCommand query = new SqlCommand("SELECT * FROM USUARIOS WHERE ID_USUARIO = @id_user", connect);
                query.Parameters.AddWithValue("@id_user", id);
                SqlDataReader read = query.ExecuteReader();

                while (read.Read())
                {
                    c.Id_User = int.Parse(read["ID_USUARIO"].ToString());
                    c.Tipo_user = read["TIPO_USUARIO"].ToString();
                    c.Senha = read["SENHA"].ToString();
                    c.Nome = read["NOME"].ToString();
                    c.Cpf = read["CPF"].ToString();
                    c.Cep = read["CEP"].ToString();
                    c.Rua = read["RUA"].ToString();
                    c.Num_casa = int.Parse(read["NUMERO_CASA"].ToString());
                    c.Complemento = read["COMPLEMENTO"].ToString();
                    c.Bairro = read["BAIRRO"].ToString();
                    c.Cidade = read["CIDADE"].ToString();
                    c.Estado = read["ESTADO"].ToString();
                    c.Tel_resid = read["TEL_RESID"].ToString();
                    c.Tel_cel = read["TEL_CEL"].ToString();
                    c.Curso = read["CURSO"].ToString();
                    c.Turma = read["TURMA"].ToString();
                }
            }
            catch (Exception e)
            {
                c = null;
            }

            if (connect.State == ConnectionState.Open)
                connect.Close();

            return c;
        }

        /* MÉTODO PARA DELETAR INFORMAÇÕES DO BD */
        internal string Deletar()
        {
            /* MENSAGEM PRÉ DEFINIDA CASO O COMANDO DÊ CERTO */
            string resp = "Removido com sucesso!";
            /* TENTATIVA DE REALIZAR O DELETE NO BD */
            try
            {
                /* ABRE A CONEXÃO COM O BD */
                connect.Open();
                /* COMANDO SQL PARA EXECUTAR NO BANCO */
                SqlCommand queryDelete = new SqlCommand("DELETE FROM USUARIOS WHERE ID_USUARIO = @id_user;", connect);
                /* ATRIBUIR UM PARÂMETRO PARA O CAMPO DO BD */
                queryDelete.Parameters.AddWithValue("@id_user", id_user);
                /* EXECUTA O COMANDO NO BD */
                queryDelete.ExecuteNonQuery();
            }
            /* CASO APRESENTE ALGUM ERRO, MOSTRARÁ A MSG DE ERRO */
            catch(Exception error)
            {
                resp = error.Message;
            }
            /* VERIFICA SE A CONEXÃO AINDA ESTÁ ABERTA, SE ESTIVER, IRÁ FECHAR */
            if(connect.State == System.Data.ConnectionState.Open)
            {
                connect.Close();
            }
            /* CASO O COMANDO TENHA SIDO EXECUTADO COM SUCESSO, APRESENTA A MSG */
            return resp;
        }
        /* MÉTODO PARA EDITAR UM USUÁRIO */
        internal string Editar()
        {
            /* MENSAGEM PRÉ DEFINIDA CASO O COMANDO DÊ CERTO */
            string resp = "Usuário salvo!";
            /* TENTATIVA DE REALIZAR UM UPDATE NA TABELA */
            try
            {
                /* ABRIR A CONEXÃO COM O BD */
                connect.Open();
                /* COMANDO SQL PARA EDITAR OS DADOS */
                SqlCommand queryUpdate = new SqlCommand("UPDATE USUARIOS SET TIPO_USUARIO = @tipo_usuario, SENHA = @senha, NOME = @nome, CPF = @cpf, CEP = @cep, RUA = @rua, NUMERO_CASA = @numero_casa, COMPLEMENTO = @complemento, BAIRRO = @bairro, CIDADE = @cidade, ESTADO = @estado, TEL_RESID = @tel_resid, TEL_CEL = @tel_cel, CURSO = @curso, TURMA = @turma;", connect);
                /* ATRIBUIR OS PARÂMETROS PARA CADA CAMPO NO BD */
                queryUpdate.Parameters.AddWithValue("@tipo_usuario", tipo_user);
                queryUpdate.Parameters.AddWithValue("@senha", senha);
                queryUpdate.Parameters.AddWithValue("@nome", nome);
                queryUpdate.Parameters.AddWithValue("@cpf", cpf);
                queryUpdate.Parameters.AddWithValue("@cep", cep);
                queryUpdate.Parameters.AddWithValue("@rua", rua);
                queryUpdate.Parameters.AddWithValue("@numero_casa", num_casa);
                queryUpdate.Parameters.AddWithValue("@complemento", complemento);
                queryUpdate.Parameters.AddWithValue("@bairro", bairro);
                queryUpdate.Parameters.AddWithValue("@cidade", cidade);
                queryUpdate.Parameters.AddWithValue("@estado", estado);
                queryUpdate.Parameters.AddWithValue("@tel_resid", tel_resid);
                queryUpdate.Parameters.AddWithValue("@tel_cel", tel_cel);
                queryUpdate.Parameters.AddWithValue("@curso", curso);
                queryUpdate.Parameters.AddWithValue("@turma", turma);
                /* EXECUTA O COMANDO PARA INSERIR AS INFORMAÇÕES NO BD */
                queryUpdate.ExecuteNonQuery();
            }
            /* CASO APRESENTE ALGUM ERRO, MOSTRARÁ A MSG DE ERRO */
            catch (Exception error)
            {
                resp = error.Message;
            }
            /* VERIFICA SE A CONEXÃO AINDA ESTÁ ABERTA, SE ESTIVER, IRÁ FECHAR */
            if (connect.State == System.Data.ConnectionState.Open)
            {
                connect.Close();
            }
            /* CASO O COMANDO TENHA SIDO EXECUTADO COM SUCESSO, APRESENTA A MSG */
            return resp;
        }

    }
}

View:

<div class="form-horizontal" style="margin-left: 150px; margin-top: 75px;">
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Tipo_user, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-5">
                @Html.EditorFor(model => model.Tipo_user, new { htmlAttributes = new { @class = "form-control form-inline" } })
                @Html.ValidationMessageFor(model => model.Tipo_user, "", new { @class = "text-danger" })
            </div>
        </div>

Answer:

If you want your User_Type property to be a DropDownList you need to change it in your Model. It has to be a list of options, there are a couple of ways to do this, but it could be a property of type List<SelectListItem> :

public List<SelectListItem> Tipo_user { get; set; }

In your controller you need to load the options from the list and send them to your view.

Controller example:

public ActionResult MeuSelectList()
{
    Exemplo exemplo = new Exemplo();
    //Monta a lista com as opções do dropdown
    exemplo.Tipo_user = new List<SelectListItem>
    {
        new SelectListItem { Value = "0", Text = "Selecione" },
        new SelectListItem { Value = "1", Text = "Administrador" },
        new SelectListItem { Value = "2", Text = "Bibliotecário" },
        new SelectListItem { Value = "3", Text = "Professor" },
        new SelectListItem { Value = "4", Text = "Aluno" }
    };

    return View(exemplo);
}

Example to assemble the DropDownList in the view:

@model Resposta_304817.Models.Exemplo

@{
    ViewBag.Title = "MeuSelectList";
}

<h2>MeuSelectList</h2>

@Html.DropDownList("Lista tipo usuário", new SelectList(Model.Tipo_user, "Value", "Text", "0"))
Scroll to Top
AllEscort